建立 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())