Qt 与 Python 混合开发|PyQt / PySide 入门、界面调用、互操作
·
技术选型说明
Python 下 Qt 绑定库两大主流:
- PyQt:功能全,商用需要授权
- PySide(Qt for Python):Qt 官方出品,LGPL 开源免费,推荐首选
当前主流版本:PySide6 / PyQt6(适配 Qt6)。
一、环境搭建(pip 一键安装)
1. 安装 PySide6(推荐)
bash
运行
pip install pyside6
2. 安装 PyQt6
bash
运行
pip install pyqt6
3. 配套工具(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混合开发
覆盖 桌面、嵌入式、网络、音视频、三维、跨语言 全场景,可作为学习、面试、项目开发完整参考手册。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)