建立 PyQt6 窗口

516 阅读2分钟

建立 PyQt6 窗口

这篇教学会介绍如何开始使用 PyQt6 建立基本的应用程序窗口,以及通过常用的窗口参数,进行窗口的相关设定。

快速导航 :

  • 建立 PyQt6 窗口
  • 调整窗口样式
  • 在窗口中放入其他组件

建立 PyQt6 窗口

PyQt6 创建窗口的起手式,会先使用 QtWidgets.QApplication(sys.argv) 创建应用程序,接着使用 QtWidgets.QWidget() 放入基底组件,作为摆放其他组件的基底,窗口程序使用sys.exit(app.exec()) 作为结尾,意义上等同将程序包裹在一个无限循环里,下方的代码执行后,会出现一个空的窗口界面。

 from PyQt6 import QtWidgets
 import sys
 ​
 app = QtWidgets.QApplication(sys.argv)  
 ​
 Form = QtWidgets.QWidget()             
 ​
 Form.show()                            
 sys.exit(app.exec())

改用 class 写法:

 from PyQt6 import QtWidgets
 import sys
 ​
 class MyWidget(QtWidgets.QWidget):
     def __init__(self):
         super().__init__()
 ​
 if __name__ == '__main__':
     app = QtWidgets.QApplication(sys.argv)
     Form = MyWidget()
     Form.show()
     sys.exit(app.exec())

调整窗口样式

创建窗口组件后,就能使用下列几种常用方法设定样式:

方法参数说明
setWindowTitle()str设定标题。
resize()width, height设定开启窗口时的长宽。
setStyleSheet()style使用网页 CSS 样式设置样式 ( 不支持 CSS3 语法 )。
width()取得窗口宽度。
height()取得窗口高度。

下面的代码执行后,会产生一个 320x240 粉红色背景的窗口,同时会印出该窗口的长宽。

 from PyQt6 import QtWidgets
 import sys
 ​
 app = QtWidgets.QApplication(sys.argv)
 ​
 Form = QtWidgets.QWidget()
 Form.setWindowTitle('千牛编程思维')      # 设置标题
 Form.resize(320, 240)                   # 设置大小
 Form.setStyleSheet('background:#fcc;')  # 设置样式
 ​
 print(Form.width())                     
 print(Form.height())                   
 ​
 Form.show()
 sys.exit(app.exec())

改用 class 写法:

 from PyQt6 import QtWidgets
 import sys
 ​
 class MyWidget(QtWidgets.QWidget):
     def __init__(self):
         super().__init__()
         self.setWindowTitle('千牛编程思维')      
         self.resize(320, 240)                   
         self.setStyleSheet('background:#fcc;')  
         print(self.width())                     
         print(self.height())                   
 ​
 if __name__ == '__main__':
     app = QtWidgets.QApplication(sys.argv)
     Form = MyWidget()
     Form.show()
     sys.exit(app.exec())

image-20230320203603780

在窗口中放入其他组件

建立基底的组件后,就能在里面加入其他的组件,下方的代码执行后,会在窗口里加入一个文字为 hello world 的 Label。

 from PyQt6 import QtWidgets
 import sys
 ​
 app = QtWidgets.QApplication(sys.argv)
 ​
 Form = QtWidgets.QWidget()
 Form.setWindowTitle('千牛编程思维')
 Form.resize(320, 240)
 Form.setStyleSheet('background:#fcc;')
 ​
 label = QtWidgets.QLabel(Form)          # 在 Form 里添加label
 label.move(50,50)                       # 移动到 (50, 50) 的位置
 label.setText('hello world')            # 写入文字
 label.setStyleSheet('font-size:30px; color:#00c')  # 设定样式
 ​
 Form.show()
 sys.exit(app.exec())

改用 class 写法:

 from PyQt6 import QtWidgets
 import sys
 ​
 class MyWidget(QtWidgets.QWidget):
     def __init__(self):
         super().__init__()
         self.setWindowTitle('千牛编程思维')
         self.resize(320, 240)
         self.setStyleSheet('background:#fcc;')
         self.ui()
 ​
     def ui(self):
         self.label = QtWidgets.QLabel(self)          
         self.label.move(50,50)                       
         self.label.setText('hello world')            
         self.label.setStyleSheet('font-size:30px; color:#00c')  
 ​
 if __name__ == '__main__':
     app = QtWidgets.QApplication(sys.argv)
     Form = MyWidget()
     Form.show()
     sys.exit(app.exec())