windows 下 QT调用python

windows 下 QT调用python

.pro 文件加上python的库

win32: LIBS += -L E:/third_party/Python310/libs/ -lpython310
INCLUDEPATH += E:/third_party/Python310/include
DEPENDPATH += E:/third_party/Python310/include

调用模块:

#include "Python.h"

void Widget::on_pushButton_clicked()
{
    qDebug() <<"qt python pid = "<< QCoreApplication::applicationPid() << " tid = "<< QThread::currentThreadId();
    Py_Initialize();
    if(!Py_IsInitialized())
    {
        PyErr_Print();
        qDebug() << "Can't Initialize python!\n" ;
        return ;
    }
    PyRun_SimpleString("import sys");

    //QString curPath = QDir::currentPath();
    QString curPath = "E:/Code/tcpTest";
    //qDebug()<<curPath;

    QString strModuleName = "qt_to_python_test";
    QString strFunctionName = "qt_to_python_test";

    QString strSys = QString("sys.path.append('%1')").arg(curPath);
    PyRun_SimpleString(strSys.toStdString().c_str());
    PyObject* pModule = PyImport_ImportModule(strModuleName.toStdString().c_str());
    if(!pModule)
    {
       qDebug()<<"pModule fail";
    }
    PyObject* pFunc = PyObject_GetAttrString(pModule,strFunctionName.toStdString().c_str());
    if(pFunc==NULL)
    {
       qDebug()<<"pFunc fail";
    }
    PyObject* pArg= PyTuple_New(2);
    PyTuple_SetItem(pArg,0,Py_BuildValue("i",4));
    PyTuple_SetItem(pArg,1,Py_BuildValue("i",5));
    char* pStuName;

    try
    {
        PyObject* pReturn = PyObject_CallObject(pFunc,pArg);
        int retok = PyArg_Parse(pReturn,"s",&pStuName);
    }//catch (std::exception& e)
    catch (std::invalid_argument e)
    {

    }catch(...)
    {

    }

    Py_Finalize();
    qDebug()<<"run python end res = " << pStuName;

}

还有更多参数类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值