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

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值