PySide / PyQt是C++的程序开发框架QT的Python实现。
Qt 是跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正的组件编程。
GUI 是图形用户界面(Graphical User Interface)的简称,是指采用图形方式显示的计算机操作用户界面。
在Python中经常使用的GUI控件集有PyQt、Tkinter、wxPython、Kivy、DearPyGUI和Libavg,其中PyQt是Qt官方专门为Python提供的GUI扩展。
开源软件需要解决的最大问题是如何处理开发人员使用开源软件来完成个人或商业目标,其中包括版权收益问题。PyQt 6 选择了GPL(自由软件协议),开发人员可以放心使用PyQt 6 开发软件。
PySide 6/PyQt 6具有的特性
- 能跨平台运行在Windows、Linux和macOS等平台上。
- 对QT库进行完全封装,基于高性能的Qt的GUI控件集。
- 使用信号/槽机制进行通信。
- 提供了一整套种类繁多的窗口控件。
- 可以使用Qt成熟的IDE(如 Qt Designer)进行图形界面设计,并自动生成可执行的Python代码。
- 底层是Qt的dll文件,基于C++运行,所以运行效率上得到了一定的保证。
PySide6:PySide6是Qt的另一个Python绑定,与PyQt类似,但使用了更宽松的许可证(LGPL)。它提供了与PyQt相似的功能和API,因此如果熟悉PyQt的使用,可以很容易地切换到PySide6。与PyQt相比,PySide6的社区支持可能相对较少,但它仍然是一个可行的选择。
安装命令
pip install pyside6
创建第一个应用:5行代码启动窗口
import sys
from PySide6.QtWidgets import QApplication, QWidget
app = QApplication(sys.argv) # 创建应用实例
window = QWidget() # 创建窗口
window.setWindowTitle(「Hello World」)
window.resize(400, 300)
window.show() # 显示窗口
sys.exit(app.exec()) # 启动事件循环[1,2]

Qt Designer可视化设计:提高效率
1. 工具使用流程
- 启动设计器:终端运行
pyside6-designer
。 - 拖拽控件:如按钮、文本框到画布,保存为
.ui
文件(XML格式)。 - 转换UI为Python代码: pyside6-uic your_ui.ui > ui_form.py

2. 在代码中加载UI
from PySide6.QtWidgets import QApplication, QWidget
from ui_form import Ui_Form # 生成的UI文件
class MyWindow(QWidget, Ui_Form): # 继承UI类
def __init__(self):
super().__init__()
self.setupUi(self) # 自动加载界面
self.pushButton.clicked.connect(self.handle_click) # 连接信号与槽
def handle_click(self):
self.label.setText(「按钮已响应」)
app = QApplication(sys.argv)
window = MyWindow()
window.show()
app.exec()
优势:界面与逻辑分离,提升开发效率。
核心机制:信号与槽(事件驱动)
1. 基础用法
from PySide6.QtWidgets import QPushButton
button = QPushButton(「点击」)
button.clicked.connect(lambda: print(「按钮被点击」)) # 连接内置信号
2. 自定义信号
from PySide6.QtCore import Signal, QObject
class MyEmitter(QObject):
data_ready = Signal(str) # 定义信号
emitter = MyEmitter()
emitter.data_ready.connect(lambda msg: print(f「收到:{msg}」))
emitter.data_ready.emit(「新数据」) # 发射信号
3. 多信号连接示例
from PySide6.QtWidgets import QLineEdit, QSlider
from PySide6.QtCore import Qt
line_edit = QLineEdit()
line_edit.textChanged.connect(lambda text: print(f「输入内容: {text}」))
line_edit.returnPressed.connect(lambda: print(「回车键按下」))
slider = QSlider(Qt.Horizontal)
slider.valueChanged[int].connect(lambda val: print(f「滑块值: {val}」))[2](@ref)
注意:信号可带参数类型(如
[int]
),确保类型安全。
打包与发布
1. 使用PyInstaller
pip install pyinstaller
pyinstaller --onefile --windowed your_app.py # 生成单文件无控制台应用
2. 资源文件嵌入
- 创建资源文件
resources.qrc
: <RCC> <qresource prefix=「/」> <file>images/icon.png</file> </qresource> </RCC> - 编译资源: pyside6-rcc resources.qrc -o rc_resources.py
- 代码中使用: from PySide6.QtGui import QIcon icon = QIcon(「:/images/icon.png」) # 冒号开头表示资源路径。


在线英文版教程,点击 here