QT调用python的部分问题

Posted 那好好

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT调用python的部分问题相关的知识,希望对你有一定的参考价值。

环境

qt5.9.0+python3.5.2 (都是32位)

问题

1.导入不了<Python.h>头文件和libs的问题

可能与下面几点有关:

  • 建议路径不要带空格,中文等,最好python直接就安装在某个盘的根目录,好找。例如:D:/python35-32/
  • qt版本和python版本都一致,以前我用32位qt与64位python。
  • python的环境变量一定要添加。

2.import不了文件??

可能如下:

  • 引入的python文件,需与生成的exe文件路径一致,所以需将python放入release文件夹内。放项目内,和项目同文件夹都无法引入python文件。

3.出现

D:\\Python35\\include/object.h:446:23: error: expected unqualified-id before \';\' 
token PyType_Slot *slots; /* terminated by slot==0. */

原因:由于QT中定义了slots作为关键了,而python3中有使用slot作为变量,所以有冲突。

解决:只是在python的object.h中 slots冲突,因此修改object.h(原文件请备份):

#undef slots //这里添加
typedef struct{
    const char* name;
    int basicsize;
    int itemsize;
    unsigned int flags;
    PyType_Slot *slots; /* terminated by slot==0. */
} PyType_Spec;
#define slots Q_SLOTS //这里添加

 参考文章

【1】QT与Python混合编程经验记录https://www.cnblogs.com/jiaping/p/6321859.html

【2】win10 + QT5.9.3 调用python程序(.py):https://blog.csdn.net/octdream/article/details/103177627

【3】Qt5(C++)调用python3脚本(带输入输出参数):https://blog.csdn.net/Sun_tian/article/details/104328564?depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-2&utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-2

以上是关于QT调用python的部分问题的主要内容,如果未能解决你的问题,请参考以下文章

在 matplotlib 内联和 QT 后端之间切换 Python 脚本

怎么用qt调用java?

26.Qt Quick QML-RotationAnimationPathAnimationSmoothedAnimationBehaviorPauseAnimationSequential(代码片段

在 Python 多处理进程中运行较慢的 OpenCV 代码片段

Python QT发出信号没有调用回调函数

qt多个工程之间调用