技术选型说明
Python 下 Qt 绑定库两大主流:
- PyQt:功能全,商用需要授权
- PySide(Qt for Python):Qt 官方出品,LGPL 开源免费,推荐首选
当前主流版本:PySide6 / PyQt6(适配 Qt6)。
一、环境搭建(pip 一键安装)
1. 安装 PySide6(推荐)
bash
运行
pip install pyside62. 安装 PyQt6
bash
运行
pip install pyqt63. 配套工具(Qt Designer 界面设计器)
bash
运行
# PySide6 pyside6-designer # PyQt6 pyqt6-tools designer二、示例 1:Python + Qt 最简窗口(PySide6)
python
运行
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton import sys if __name__ == "__main__": app = QApplication(sys.argv) win = QMainWindow() win.resize(400, 200) win.setWindowTitle("PySide6 窗口") btn = QPushButton("点击按钮", win) btn.move(150, 80) def on_click(): print("按钮被点击") btn.clicked.connect(on_click) win.show() sys.exit(app.exec())三、示例 2:加载 Qt Designer 绘制的 UI 文件
- 使用
pyside6-designer拖拽控件,保存为main.ui - Python 直接加载使用
python
运行
from PySide6.QtWidgets import QApplication, QMainWindow from PySide6.QtUiTools import QUiLoader import sys if __name__ == "__main__": app = QApplication(sys.argv) ui = QUiLoader().load("main.ui") ui.show() sys.exit(app.exec())也可使用工具将
.ui转为.py代码:bash
运行
pyside6-uic main.ui -o ui_main.py
四、Python 调用 C++(核心混合场景)
两种主流混合方案:
方案 1:C++ 编译为动态库(.dll/.so),Python 调用
- Qt C++ 编写业务逻辑,编译为动态链接库
- Python 使用
ctypes/cffi加载库并调用函数
C++ 动态库代码(Windows dll)
cpp
运行
extern "C" __declspec(dllexport) int add(int a, int b) { return a + b; }编译生成test.dll
Python 调用
python
运行
import ctypes dll = ctypes.CDLL("./test.dll") res = dll.add(10, 20) print(f"调用C++结果: {res}")方案 2:QML 作为中间层(Qt 官方推荐)
架构:Python(PySide6) <--> QML <--> C++
- C++ 类注册到 QML
- Python 加载 QML 界面,通过 QML 信号 / 属性和 C++ 双向通信适合大型界面 + 复杂底层逻辑的项目。
五、C++ 调用 Python 脚本
Qt C++ 中执行 Python 代码 / 脚本,使用Python C API或进程调用:
1.简单场景:QProcess拉起 python 解释器执行脚本
cpp
运行
QProcess proc; proc.start("python", QStringList() << "test.py"); proc.waitForFinished(); QString out = proc.readAllStandardOutput();2.深度嵌入:使用 Python 原生 API,将 Python 解释器嵌入 Qt 进程。
六、适用场景 & 优缺点
适用场景
- 快速原型、工具类软件:Python + PySide6 开发效率极高
- 界面由 Python 实现,底层算法 / 硬件 / 通信由 C++ 实现
- 数据分析、可视化、运维工具、自动化脚本界面
优缺点
- 优点:开发快、胶水语言灵活、丰富 Python 第三方库(数据分析、AI、爬虫)
- 缺点:大型桌面软件性能略低于纯 C++;打包后体积偏大
七、项目打包发布
Python + Qt 程序打包为独立可执行文件,使用PyInstaller
bash
运行
pip install pyinstaller # 打包命令 pyinstaller -w -F main.py-w:关闭控制台黑窗口-F:打包为单个 exe
小结
- 纯界面 / 工具优先使用PySide6(免费开源);
- 混合开发主流模式:C++ 动态库 + Python 调用、QML 桥接双向通信;
- Python + Qt 适合快速开发、算法结合界面、小型工具,C++ 负责高性能底层逻辑。
全系列 Qt 技术博客完结
至此整套 Qt 学习路线全部完成:
基础控件 → QML → 实战项目 → 编译排错 → 性能优化 → 版本迁移 → 嵌入式移植 → 3D/多媒体/网络 → Python混合开发
覆盖桌面、嵌入式、网络、音视频、三维、跨语言全场景,可作为学习、面试、项目开发完整参考手册。