Qt-Creator-与Python混合编程配置
目录
Qt Creator 与Python混合编程配置
第一步 创建Qt工程
第二步 在项目.pro文件下添加python解释器安装路径
添加代码如下,大家可复制后更改python版本以及安装路径
INCLUDEPATH += C:\Python\include
LIBS += -LC:\Python\libs -lpython311
第三步 给项目添加Python文件
第四步 编写python代码验证安装【简单案例】
在创建的python文件里边写入下面代码:
def add(a, b):
return a, b
在.h文件里边加入下面代码:【可以自己创建,我用的是创建项目生成的.h文件】
#include <Python.h>
#include <iostream>
#include <QDebug>
在.h文件对应的.cpp文件里边的函数内加入以下代码:【析构函数不变】
//Python初始化
Py_Initialize();
if( !Py_IsInitialized() )
qDebug()<<"初始化失败";
//导入sys模块设置模块地址
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')");
//创建模块指针
PyObject* pModule = PyImport_ImportModule("Py_Module");
if (!pModule)
qDebug()<<"获取模块指针1失败";
//创建函数指针
PyObject* pFunc= PyObject_GetAttrString(pModule,"add");
if(!pFunc)
qDebug()<<"获取函数指针2失败";
//创建函数参数,方法1
PyObject* pPara = PyTuple_New(2); // 2个参数
PyTuple_SetItem(pPara, 0, Py_BuildValue("i",1)); //参数1为int型 1
PyTuple_SetItem(pPara, 1, Py_BuildValue("i",2)); //参数2为int型 2
//pPara = Py_BuildValue("(i,i)",1,2); //连写方式
//创建函数参数,方法2
PyObject* args = PyTuple_New(2); // 2个参数
PyObject* arg1 = PyLong_FromLong(4); // 参数一设为4
PyObject* arg2 = PyLong_FromLong(3); // 参数二设为3
PyTuple_SetItem(args, 0, arg1);
PyTuple_SetItem(args, 1, arg2);
//调用Python函数,传入元组参数pPara
PyObject *FuncBack = PyObject_CallObject(pFunc,pPara);
//PyObject_CallObject(pFunc,nullptr); //无参数调用
//FuncBack是返回值指针,转换获取返回值
int res = 0;
PyArg_Parse(FuncBack,"i",&res);
qDebug()<<"返回值: "<<res;
//调用结束,销毁
Py_Finalize();
点击运行
特别注意
一、导入python.h文件报错
解决方法
object.h文件报错一般是因为宏定义冲突的问题,我们在文件报错所在地方加上一行代码取消宏定义就可以了
#undef slots //取消宏定义
二、运行后提示找不到.py文件路径或导入.py文件报错
解决方法
将项目下的.py文件复制到项目debug文件夹下
我的.py文件位置:C:\App\Qt\Qt_project\qt_python1
我的项目debug文件夹位置:C:\App\Qt\Qt_project\build-qt_python1-Desktop_Qt_5_14_2_MinGW_64_bit-Debug\debug