前言
我们都知道,现在的Qt是可以调用Python 脚本的,通过强大的Python库,去实现一些功能。网络上有很多的教程,根据教程的步骤,我一步步的实现,不过根据教程上的做,总是会有问题,下面我就根据我调试的过程,写下记录,共同学习;
准备
1.Python安装包(3.8.5)
2.QT
正题
1.安装Python环境,安装好后如下,include就是我们需要的头文件。
2.创建QT项目,打开项目文件(.pro),添加下面语句,其中路径根据实际情况写。
INCLUDEPATH += -I C:/Users/001/AppData/Local/Programs/Python/Python38-32/include
LIBS += -LC:/Users/001/AppData/Local/Programs/Python/Python38-32 -lpython38
DISTFILES += \
MyPython.py
3.创建python脚本
def hello():
print("hello wrold ")
4 .QT
Py_Initialize();
//如果初始化失败,返回
if(!Py_IsInitialized())
{
qDebug()<<"初始化失败!";
return a.exec();
}
//加载模块,模块名称为myModule,就是myModule.py文件
PyObject *pModule = PyImport_ImportModule("MyPython");
//如果加载失败,则返回
if(!pModule)
{
qDebug()<<"加载Python文件失败";
return a.exec();
}
//加载函数greatFunc
PyObject * pFuncHello = PyObject_GetAttrString(pModule, "hello");
//如果失败则返回
if(!pFuncHello)
{
qDebug()<<"加载函数失败";
return a.exec();
}
//调用函数
PyObject * pResult = PyObject_CallFunction(pFuncHello, NULL);
// qDebug()<< *pResult;
//退出
Py_Finalize();
5.slots时QT的关键词,所以object.h中需要加入下图的两句
6.代码写好之后,运行时报错,加载模块失败
解决
出现这个问题,主要的原因就是,python解释器找不到python脚本,这个时候,我们就要想办法让python解释器能够找到我们写的脚本
解决方法:
1.在我们Debug文件夹,把我们的python脚本复制过去