PySide,也叫 Qt for Python,是一套 Python 图形界面框架,依托 Qt 工具包来开发 GUI 应用。PySide 是 Qt 官方提供的 Python 绑定库,目前由 Qt 公司自主维护开发。
安装
验证是否安装成功:
1
2
| $ python -c "import PySide6; print(PySide6.__version__)"
6.12.0
|
创建第一个应用
1
2
3
4
5
6
7
8
9
10
| import sys
from PySide6.QtWidgets import QApplication, QWidget
app = QApplication(sys.argv)
window = QWidget(windowTitle="Hello Python GUI!")
window.show()
app.exec()
|
QApplication 一个应用程序有且仅有一个 QApplication 实例,传递 sys.argv 是为了让应用程序能够处理命令行参数,例如 --debug 或 --verboseQWidget 是一个窗口基类,所有 GUI 窗口都必须继承自 QWidgetwindow.show() 显示窗口,默认是隐藏的app.exec() 进入事件循环,等待用户交互,直到应用程序退出
运行效果如下:

事件循环
应用上的每一次交互操作 —— 无论是按键、鼠标点击还是鼠标移动 —— 都会生成一个事件,并存入事件队列。在事件循环中,每一轮迭代都会检查该队列;如果发现有待处理事件,就会将事件连同程序控制权一并交给对应的事件处理器。事件处理器处理完事件后,再把控制权交回事件循环,继续等待后续事件。每个应用同一时刻只会运行一个事件循环。
示意图如下:

QApplication 类负责承载整个应用的事件循环
自定义窗口
在 QT 中,任何控件都可以是窗口,如下:
1
2
3
4
5
6
7
8
9
10
| import sys
from PySide6.QtWidgets import QApplication, QPushButton
app = QApplication(sys.argv)
window = QPushButton("Hello Python GUI!")
window.show()
app.exec()
|
运行效果如下:

PySide6 提供了 QMainWindow 类,用于创建主窗口,自定义窗口可以继承自 QMainWindow,并在 __init__ 方法中初始化窗口。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton
app = QApplication(sys.argv)
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Hello Python GUI!")
button = QPushButton("Click me!")
self.setCentralWidget(button)
window = MyWindow()
window.show()
app.exec()
|
运行效果如下:
