第一步 创建Qt工程
![](https://i-blog.csdnimg.cn/blog_migrate/e02570826dd6eb5e7e67892278d4bbff.png)
第二步 在项目.pro文件下添加python解释器安装路径
![](https://i-blog.csdnimg.cn/blog_migrate/286390a3cb0fab4df7440680a8ee2de0.png)
添加代码如下,大家可复制后更改python版本以及安装路径
INCLUDEPATH += C:\Python\include
LIBS += -LC:\Python\libs -lpython311
第三步 给项目添加Python文件
![](https://i-blog.csdnimg.cn/blog_migrate/d98dd3108b106ea736bee284bff6b3d7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1e08abbad9fc55d40b25b30f53e4f517.png)
第四步 编写python代码验证安装【简单案例】
在创建的python文件里边写入下面代码:
def add(a, b):
return a, b
![](https://i-blog.csdnimg.cn/blog_migrate/c062eb2efb9b61646ac40c532acf7010.png)
在.h文件里边加入下面代码:【可以自己创建,我用的是创建项目生成的.h文件】
#include <Python.h>
#include <iostream>
#include <QDebug>
![](https://i-blog.csdnimg.cn/blog_migrate/47500ab2092bf6145fdf9c578646c26a.png)
在.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();
![](https://i-blog.csdnimg.cn/blog_migrate/9a139760806acc03bb77bb179517ef81.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fbd31cb71b7480a433b3b47a293c6ab0.png)
点击运行
![](https://i-blog.csdnimg.cn/blog_migrate/8077b124a7db7ba9b797483ae0fcedbd.png)
特别注意
一、导入python.h文件报错
![](https://i-blog.csdnimg.cn/blog_migrate/9fa04663c2c53b814fb6e3344fa50e36.png)
解决方法
object.h文件报错一般是因为宏定义冲突的问题,我们在文件报错所在地方加上一行代码取消宏定义就可以了
#undef slots //取消宏定义
![](https://i-blog.csdnimg.cn/blog_migrate/feab393904a0a321541f6b5450aa32d6.png)
二、运行后提示找不到.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
![](https://i-blog.csdnimg.cn/blog_migrate/6918fe59621b307c0ffa3e0dc46fb088.png)
![](https://i-blog.csdnimg.cn/blog_migrate/35e82dbceb7ed813a2839cb03d613140.png)