QT中调用Python

Python013

QT中调用Python,第1张

如果你是嵌入的话,应该没问题。python的库会暴露c api的,你的qt程序照着python文档中的embedded章节就好。 看样子,你的是linux下的,不过一般头文件就是include/python.h,怎么会是include/python2.7呢?你写错了吧。库文件应该是在lib下面。

这个看你要求了,如果只是单纯调用,和Qt没什么关系,直接看python手册中C、C++调用python相关的内容就行了。

如果你的python代码中还需要操作Qt相关的东西,那么你需要的 PythonQt 这个第三方的模块(概念上类似于Qt自己的QtScript模块)

#include <QCoreApplication>

//包含调用Python相应的头文件

#include <Python.h>

int main(int argc, char *argv[])

{

 QCoreApplication a(argc, argv)

//初始化Python解释器,这是调用操作的第一步

 Py_Initialize()

 if( !Py_IsInitialized() ){

 return -1

 }

//执行单句Python语句,用于给出调用模块的路径,否则将无法找到相应的调用模块

 PyRun_SimpleString("import sys")

 PyRun_SimpleString("sys.path.append('./')")

//获取qt_python_fun.py模块的指针

 PyObject* pModule = PyImport_ImportModule("qt_python_fun")

 if (! pModule){

 printf("Can't open python file\n")

 return -1

 }

//获取hello函数的指针

 PyObject* pFunhello = PyObject_GetAttrString(pModule,"hello")

 if (!pFunhello){

 printf("Get function hello failed\n")

 return -1

 }

//调用函数,传入参数为NULL

 PyObject_CallFunction(pFunhello,NULL)

//销毁Python解释器,这是调用的最后一步

 Py_Finalize()

 return a.exec()

}

作者:sleepyjoker

链接:http://www.jianshu.com/p/cfe44f56bb90

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。