- 安装python-3.7.0
下载地址:https://www.python.org/downloads/release/python-370/
- 新建test工程(vs2013、qt5.7.0)
导入python库
编写test代码
#include <QtCore/QCoreApplication>
#include <QDebug>
#include <Python.h>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//进行初始化
Py_Initialize();
//如果初始化失败,返回
if (!Py_IsInitialized()) {
qDebug() << "init fail";
return a.exec();
}
//加载模块,模块名称为myModule,就是test.py文件
PyObject *pModule = PyImport_ImportModule("test");
//如果加载失败,则返回
if (!pModule) {
qDebug() << "import fail";
return a.exec();
}
//加载函数testFunc
PyObject * pFuncHello = PyObject_GetAttrString(pModule, "testFunc");
//如果失败则返回
if (!pFuncHello) {
qDebug() << "get fail";
return a.exec();
}
//调用函数
PyObject_CallFunction(pFuncHello, NULL);
//退出
Py_Finalize();
return a.exec();
}
python文件,放入编译生成的可执行文件的同级目录下。
#!/usr/bin/python3
def testFunc() :
print("Hello World!")
编译时应该会报错:error: expected unqualified-id before ';' token
由于QT中定义了slots作为关键了,而python3中有使用slot作为变量,所以有冲突,办法是:
发现失败了!!!,需要将test.py文件重命名,否则失败,不知原因。