QT调用Python脚本(无参,有参,返回值)和QT5.12安装详细讲解,避坑手册

QT调用Python脚本(无参,有参,返回值)详细讲解,避坑手册
因为工作需要,用QT调用Python脚本。网上查了一大堆,踩了无数的坑。终于算是可以了啊。
一个电脑小白的自我成长之路,总是那么漫长,充满疑惑苦恼,无奈,和成功之后的喜悦,开心,欣喜。

1.QT5.12安装

由于现在的Python版本基本都是3.7及其以上版本,基本都是64位。所以,先将QT版本也换一换,最少要换成64位的,我就在这踩的一个深深的坑。
QT5.12以及以上版本安装,直接截图啦。Qt5.12下载网址: http://download.qt.io/archive/qt/5.12/5.12.2/
(选择这个,64位安装包大包在里面,别看名字以为是32位哈,不注意这也是一个小坑)
在这里插入图片描述
下载完后,打开文件夹。
在这里插入图片描述
右键,管理员身份运行(避免安装过程,360老弹修改啥啥,允许阻止啥的)
在这里插入图片描述
运行后,出现下面界面,点击next.
在这里插入图片描述输入自己注册的QT账号,和密码。如果没有,填signup,下面3行。邮箱,密码(密码需要有大写字母,小写字母,数字组成)然后,next。(没有账号的,QT会发送一个认证到你的邮箱,需要登录邮箱进行认证
在这里插入图片描述
后面就下一步,然后选择这两个组件
在这里插入图片描述
点击我同意I agree.后面一路下一步,等待安装完成。
在这里插入图片描述

2.创建Python文件

文件名为aa.py(注意文件名不要写test,这也是一个坑,因为pyhon环境中有test.py文件,名字冲突啦)

def show():
    print("hello!")
def sum(a,b):
    return (a+b)

def main():
    show()
    print(sum(1,2))
 
if __name__ == '__main__':
    main()

3.打开QT

点击newProject,创建一个新QT项目名字为05_QtincludePython(名字自己取就行),然后右键,添加库
在这里插入图片描述
在这里插入图片描述
选外部库,下一步
在这里插入图片描述
接着,将自己电脑中的python安装环境的libs和include文件夹路径添加到里面,Windows打钩,其他不选。如下
在这里插入图片描述
添加后,.pro文件中,会出现如下几行包含路径代码,将下方的4行注释掉,保留上方4行(这里也是一个坑,太鸡儿坑啦)
在这里插入图片描述运行一下你的QT文件,生成对应的build-05_QtincludePython-Desktop_Qt_5_12_6_MinGW_64_bit-Debug文件。很长,很长!!!!!!请记住它

**环境变量对应添加:**电脑→属性→高级系统设置→
环境变量→path
在这里插入图片描述
在这里插入图片描述

4.python动态库,静态库相应修改

在python的libs文件中(前面添加的文件路径),添加python3.dll,python37.dll两个动态库,(这两个动态库在libs文件的外层文件Anaconda3中,认真找别找错了),然后将python37.lib复制一下并重新命名为python37d.lib,也放在libs文件中。(此处坑多)在这里插入图片描述

5.放入python文件脚本

将自己写好的python脚本放入build-05_QtincludePython-Desktop_Qt_5_12_6_MinGW_64_bit-Debug文件debug文件中
在这里插入图片描述

6.在QT文件中添加调用代码

在sources源文件中添加代码:
在这里插入图片描述
初始化前添加这行代码 Py_SetPythonHome(L"E:/Users/dell/Anaconda3"); //这一步很重要哈,又可能QT找不到python根目录坑了我几个小时,一直报ModuleNotFoundError: No module named ‘encodings‘的错误。网上查查,终于找到了,原因是没有找到python的根目录

Py_SetPythonHome(L"E:/Users/dell/Anaconda3");  //这一步很重要哈,又可能QT找不到python根目录
    Py_Initialize();
    Py_Initialize();

    //如果初始化失败,返回
    if(!Py_IsInitialized())
    {
        qDebug()<<"Python init fail!";
        return a.exec();
    }
    //设置python文件路径
    PyRun_SimpleString("import sys");
    PyRun_SimpleString("sys.path.append('./')");

    //加载aa.py文件
    PyObject *pModule = PyImport_ImportModule("aa"); //注意python文件不要取名为test.py,会与python库文件冲突
    if(!pModule)
    {
        qDebug()<<"load pModule(testfile.py) fail!";
        return a.exec();
    }
    //加载函数show
    PyObject* pFun_show= PyObject_GetAttrString(pModule,"show");
    if(!pFun_show)
    {
        qDebug()<<"Get pFun_show(show) failed!";
        return a.exec();
    }
    //加载函数sum
    PyObject* pFun_sum= PyObject_GetAttrString(pModule,"sum");
    if(!pFun_sum)
    {
        qDebug()<<"Get pFun_sum(sum) failed!";
        return a.exec();
    }


运行如有下面的错误,请一一修改。我想按照我上面的来,基本没有什么错误啦
在这里插入图片描述
在这里插入图片描述
“哎呀吗呀,咋还有错”。哈哈,如果还有欢迎留言**&_***

  • 5
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值