欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > Qt 调用执行 Python 函数

Qt 调用执行 Python 函数

2024/10/24 18:19:20 来源:https://blog.csdn.net/qq_32863863/article/details/141633672  浏览:    关键词:Qt 调用执行 Python 函数

一.环境

Qt 5.15.2
python-3.12.5

二.安装

1.安装python-3.12.5.exe
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三.配置

1.设置环境变量
在这里插入图片描述
2.设置Qt 编译环境
在这里插入图片描述
在这里插入图片描述
3.新建Python文件
在这里插入图片描述在这里插入图片描述
4.运行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四.源码

1.修改pro文件
在这里插入图片描述
2.testPy.py
注意: .py文件需要拷贝到build目录下

def myPrint(string):print(string)def add(a,b):return (a+b)

3.mainwindow.cpp

#undef slots
#include <Python.h>
#define slots Q_SLOTSMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{Py_Initialize();if ( !Py_IsInitialized() ){qDebug("python 初始化失败!");}PyRun_SimpleString("import sys");PyRun_SimpleString("sys.argv = ['python.py']");PyRun_SimpleString("sys.path.append('./')");//导入testPy.py模块PyObject* pModule = PyImport_ImportModule("testPy");if (!pModule){qDebug("Cant open python file!\n");}//调用Python函数 myPrintPyObject* pFunc1= PyObject_GetAttrString(pModule,"myPrint");if(!pFunc1){qDebug()<<"Get function myPrint failed";}PyObject_CallFunction(pFunc1,"s","123"); //函数输入参数//调用Python函数 addPyObject* pFunc2= PyObject_GetAttrString(pModule,"add");if(!pFunc2){qDebug()<<"Get function myPrint failed";}PyObject* pParam = PyTuple_New(2);  //2个输入参数PyTuple_SetItem(pParam,0,Py_BuildValue("i",15));PyTuple_SetItem(pParam,1,Py_BuildValue("i",16));PyObject *FuncBack = PyObject_CallObject(pFunc2,pParam);int rtn = 0;PyArg_Parse(FuncBack,"i",&rtn);qDebug() << "Func2 返回值 = " << rtn;//结束,释放pythonPy_Finalize();}

五.运行

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com