技术选型说明

Python 下 Qt 绑定库两大主流:

  1. PyQt:功能全,商用需要授权
  2. 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 文件

  1. 使用 pyside6-designer 拖拽控件,保存为 main.ui
  2. 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 调用
  1. Qt C++ 编写业务逻辑,编译为 动态链接库
  2. 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 进程。


六、适用场景 & 优缺点

适用场景
  1. 快速原型、工具类软件:Python + PySide6 开发效率极高
  2. 界面由 Python 实现,底层算法 / 硬件 / 通信由 C++ 实现
  3. 数据分析、可视化、运维工具、自动化脚本界面
优缺点
  • 优点:开发快、胶水语言灵活、丰富 Python 第三方库(数据分析、AI、爬虫)
  • 缺点:大型桌面软件性能略低于纯 C++;打包后体积偏大

七、项目打包发布

Python + Qt 程序打包为独立可执行文件,使用 PyInstaller

bash

运行

pip install pyinstaller

# 打包命令
pyinstaller -w -F main.py
  • -w:关闭控制台黑窗口
  • -F:打包为单个 exe

小结

  1. 纯界面 / 工具优先使用 PySide6(免费开源);
  2. 混合开发主流模式:C++ 动态库 + Python 调用QML 桥接双向通信
  3. Python + Qt 适合快速开发、算法结合界面、小型工具,C++ 负责高性能底层逻辑。

全系列 Qt 技术博客完结

至此整套 Qt 学习路线全部完成:

基础控件 → QML → 实战项目 → 编译排错 → 性能优化 → 版本迁移 → 嵌入式移植 → 3D/多媒体/网络 → Python混合开发

覆盖 桌面、嵌入式、网络、音视频、三维、跨语言 全场景,可作为学习、面试、项目开发完整参考手册。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐