news 2026/6/12 3:18:51

Qt 与 Python 混合开发|PyQt / PySide 入门、界面调用、互操作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Qt 与 Python 混合开发|PyQt / PySide 入门、界面调用、互操作

技术选型说明

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混合开发

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 3:16:59

一文读懂LCM-LoRA核心基础知识

写在前面 欢迎大家关注Rocky的公众号&#xff1a;WeThinkIn 欢迎大家关注Rocky的知乎&#xff1a;Rocky Ding AIGC算法工程师/开发工程师面试面经秘籍分享&#xff1a;WeThinkIn/Interview-for-Algorithm-Engineer欢迎大家Star&#xff5e; AIGC时代的 《三年面试五年模拟》AI算…

作者头像 李华
网站建设 2026/6/12 3:09:54

科普时刻 | 什么是柔性PCB?

柔性印刷电路板是一种日益普及的电子互连技术。这种连接电路组件的方法&#xff0c;可提供更多设计选项和更高的稳健性。柔性PCB也被称为柔性电子、柔性电路板、柔性印刷电路&#xff08;FPC&#xff09;或柔性电路&#xff0c;其电路传导路径构建在柔性塑料基板上&#xff08;…

作者头像 李华
网站建设 2026/6/12 3:08:53

南京大学揭秘:大模型做加法为何频频算错?

这项由南京大学软件新技术国家重点实验室主导的研究&#xff0c;发表于2026年第43届国际机器学习大会&#xff08;ICML 2026&#xff09;&#xff0c;论文编号为arXiv:2606.03645&#xff0c;有兴趣深入了解的读者可通过该编号查询完整论文。你有没有遇到过这样的场景&#xff…

作者头像 李华
网站建设 2026/6/12 3:07:52

DeepVoice实战指南:5步构建你的神经网络语音合成系统

DeepVoice实战指南&#xff1a;5步构建你的神经网络语音合成系统 【免费下载链接】deepvoice Deep Voice: Real-time Neural Text-to-Speech 项目地址: https://gitcode.com/gh_mirrors/de/deepvoice 想要将文字变成自然的语音吗&#xff1f;DeepVoice正是你需要的开源解…

作者头像 李华