Qt调用python
时间: 2025-07-19 11:14:26 浏览: 18
### 如何在 Qt 中嵌入和调用 Python 脚本
#### 安装必要的依赖项
为了能够在Qt程序中成功嵌入并调用Python脚本,首先需要安装Miniconda3。这一步骤是为了创建独立于系统默认Python环境的工作空间,从而确保即使目标机器上未安装Python解释器也能够正常工作[^2]。
#### 配置项目文件
接着,在`.pro`项目配置文件里添加如下内容以便链接PySide2库(这是Qt官方支持用于绑定Python的模块),以及指定额外的包含路径和库目录:
```qmake
QT += core gui widgets network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11 console
CONFIG -= app_bundle
SOURCES += main.cpp \
python_embedded.cpp
HEADERS += python_embedded.h
LIBS += -L$$PWD/../../miniconda3/envs/qt_python/lib/
INCLUDEPATH += $$PWD/../../miniconda3/envs/qt_python/include/python3.8/
# 添加 PySide2 库位置
QMAKE_CXXFLAGS += -I$$PWD/../../miniconda3/envs/qt_python/include/PySide2
LIBS += -lshiboken2 -lQt5Core -lQt5Gui -lQt5Widgets -lpython3.8d
```
上述设置假设读者已经在本地通过Conda创建了一个名为qt_python的虚拟环境,并激活该环境中包含了PySide2和其他所需的包。
#### 编写 C++ 代码实现 Python 解释器初始化与释放
下面展示的是一个简单的例子,展示了怎样利用C++去启动Python解释器、加载外部.py文件内的函数定义然后执行它们;最后再关闭这个实例化出来的解释器对象。
```cpp
// 文件名: python_embedded.cpp
#include "python_embedded.h"
#include <QString>
extern "C" {
#include <Python.h>
}
void initializePython() {
Py_Initialize(); // 初始化Python解释器
}
bool runExternalScript(const QString& scriptPath) {
FILE* file;
#ifdef _MSC_VER
fopen_s(&file, scriptPath.toStdString().c_str(), "r");
#else
file = fopen(scriptPath.toStdString().c_str(), "r"); /* Linux */
#endif
if (file != NULL) {
int result = PyRun_SimpleFile(file, scriptPath.toUtf8().constData());
fclose(file);
return true; // 成功读取并运行了给定路径下的Python脚本
} else {
qDebug()<<"Failed to open the specified Python script.";
return false;
}
}
void finalizePython() {
Py_FinalizeEx(); // 清理资源并结束会话
}
```
以上实现了基本的功能框架,即可以在Qt应用内部安全地操作Python引擎而不会影响宿主进程稳定性的同时完成预期任务。
#### 创建对应的头文件声明接口方法
为了让其他部分的应用能方便地访问这些功能,还需要准备相应的头文件来进行公开说明:
```cpp
// 文件名: python_embedded.h
#ifndef PYTHON_EMBEDDED_H
#define PYTHON_EMBEDDED_H
class PythonEmbedded {
public:
static void Initialize();
static bool RunExternalScript(QString path);
static void Finalize();
};
#endif //PYTHON_EMBEDDED_H
```
这样就完成了整个流程的设计,允许开发者轻松地把现有的Python逻辑集成进来并与图形界面组件交互起来。
阅读全文
相关推荐




















