QT中调用python文件

#include 
#include
#include

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    //////////////////////////////////////
    Py_SetProgramName(argv[0]);
    Py_Initialize();
// test cannt output python 
    PyRun_SimpleString("print 'Hello Python! this is mengtianwxs'\n");
// add python path
    PyRun_SimpleString("import sys");
    PyRun_SimpleString("sys.path.append('./')");
//import pya.py file
    PyObject *pModule=PyImport_ImportModule("pya");
//use rock function
    PyObject *pFunc=PyObject_GetAttrString(pModule,"rock");
    PyObject_CallFunction(pFunc,NULL);
//end 
    Py_Finalize();
    /////////////////////////////////////////

    return a.exec();
}

 

环境

opensuse15.0 qt5 python3.6 安装的有python3-devel包。

确认qt5的编译器是64位的,需要和python 64位对应。

@1 从qt creator中项目右键,选择添加外部库,可以参考这篇文章。

https://blog.csdn.net/xia_xia_mg/article/details/80065284

QT中调用python文件_第1张图片

library file在  /usr/lib64/python3.6/config-3.6m-x86_64-linux-gnu  选择 libpython3.6m.so

include path 在 /usr/include/python3.6m

@2 如果都设置完成之后,可以输出 Hello Python! this is mengtianwxs 说明可以运行python程序了。如果没有加载python 文件。只是找不到你的python文件。可以添加你的文件的路径,即可。方法如下


    // add python path
        PyRun_SimpleString("import sys");
        PyRun_SimpleString("sys.path.append('/home/mt/workspace/untitled')");
        PyRun_SimpleString("print(sys.path)");
  //untitled1console是我存入python文件的目录

 /////////////////////////////////////////////////////////////////////////////
    Py_Initialize();
    // test cannt output python
    //        PyRun_SimpleString("print(2+3\n)");
    // add python path
    PyRun_SimpleString("import sys");
    PyRun_SimpleString("sys.path.append('/home/mt/workspace/untitled')");
    //        PyRun_SimpleString("print(sys.path)");
    //import pya.py file
    PyObject *pModule=PyImport_ImportModule("mtt");
    if(!pModule){
        qDebug()<<"cannot open file";
    }
    //use rock function
    PyObject *pFunc=PyObject_GetAttrString(pModule,"aa");
    PyObject_CallFunction(pFunc,NULL);
    //end
    Py_Finalize();

 

你可能感兴趣的:(qt/pyqt)