134通过Qt控制python代码运行并将结果显示

本期给大家介绍的是134通过Qt控制python代码运行并将结果显示,可免敲代码运行:

代码总共是3个py文件和一个编译好的exe文件。通过双击exe文件点击按钮,来代替python命令行输入python命令来运行代码。

代码仓库和视频演示地址:

134通过Qt控制python代码运行并将结果显示_哔哩哔哩_bilibili

首先cmd进入命令行 输入

python 01makedir.py

python 02mkphotos.py

python 03drawrectangle.py

这三个代码都是可以正常运行的

然后我

Qt 环境中运行 Python 脚本或代码可以通过多种方式实现,包括使用 `QProcess` 调用外部 Python 解释器执行脚本,或者通过嵌入 Python 解释器直接在 Qt 应用中运行 Python 代码。 ### 使用 QProcess 执行 Python 脚本 `QProcess` 类允许启动外部程序与之通信。可以用来执行 Python 脚本获取其输出结果。 ```cpp #include <QProcess> // ... QString pythonScriptPath = "D:/Scripts/Python/test.py"; QStringList arguments; arguments << "-n" << "lily"; QProcess process; process.start("python", arguments); process.waitForFinished(-1); // 等待脚本执行完成 QString output = process.readAllStandardOutput(); QString error = process.readAllStandardError(); qDebug() << "Output:" << output; qDebug() << "Error:" << error; ``` 这种方式适用于简单的脚本调用,无需修改 `.pro` 文件[^2]。 ### 嵌入 Python 解释器 如果希望在 Qt 应用程序中直接运行 Python 代码,需要嵌入 Python 解释器。这要求在项目中链接 Python开发库,进行一些初始化设置。 #### 修改 `.pro` 文件 确保 `.pro` 文件中包含 Python 的头文件路径和库路径: ```qmake INCLUDEPATH += /usr/include/python3.8 LIBS += -lpython3.8 ``` #### 初始化 Python 解释器 ```cpp #include <Python.h> Py_Initialize(); // 初始化 Python 解释器 if (!Py_IsInitialized()) { qDebug() << "Failed to initialize Python interpreter."; return -1; } ``` #### 导入 Python 模块调用函数 ```cpp PyObject* pModule = PyImport_ImportModule("test"); // 加载 test.py 模块 if (!pModule) { qDebug() << "Failed to load Python module."; Py_Finalize(); return -1; } PyObject* pFunc = PyObject_GetAttrString(pModule, "testFunc"); // 获取 testFunc 函数 if (!pFunc || !PyCallable_Check(pFunc)) { qDebug() << "Failed to get Python function."; Py_XDECREF(pFunc); Py_DECREF(pModule); Py_Finalize(); return -1; } PyObject_CallFunction(pFunc, NULL); // 调用函数 Py_DECREF(pFunc); Py_DECREF(pModule); Py_Finalize(); // 清理 Python 解释器 ``` #### 解决与 Qt 的 `slots` 冲突问题 由于 Qt 定义了 `slots` 宏,可能会与 Python 中的 `slot` 变量冲突,可以在包含 Python 头文件之前定义 `#undef slots` 来解决这个问题: ```cpp #undef slots #include <Python.h> #define slots Q_SLOTS ``` ### 注意事项 - 确保 Python 版本与 Qt 项目兼容(例如使用 Python 3.x)。 - 在嵌入 Python 解释器时,需要注意内存管理和异常处理。 - 使用 `QProcess` 时,需要确保 Python 解释器的路径正确,且脚本具有可执行权限。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值