Ubuntu 16.04下Qt5.14(C++)配置并调用python脚本

Ubuntu16.04下Qt5.14C++配置并调用python脚本实现画图

  • 环境要求
  • 环境配置
  • qt调用python实现画图
    • C++代码
    • python代码
    • 上菜

环境要求

linix版本:Ubuntu16.04
qt版本:C++ qt-linux-x64-5.14.2 下载链接:linux-qt5.14.2下载
python版本:python3.6

环境配置

qt环境的配置踩了很多坑,本方法适用于Ubuntu下qt5版本调用python3文件。
1.下载qt5.14.2
下载可以参考这边博客:qt5.14.2安装教程
2.为qt配置python环境
qt如果想要调用python脚本,就要引入Python.h这个库,因此要在qt的.pro工程文件中配置调用的python链接库。

1)首先安装python3.6-dev

sudo apt install python3.6-dev

为什么需要安装:Ubuntu 16.04下Qt5.14(C++)配置并调用python脚本_第1张图片
2)找到python的安装位置

sudo locate python3.5-config 

3)根据安装位置查找配置环境的信息

sudo /usr/bin/python3.5-config --cflags
sudo /usr/bin/python3.5-config --ldlags

Ubuntu 16.04下Qt5.14(C++)配置并调用python脚本_第2张图片

4)根据3得到的信息根据以下形式在.pro中配置python路径
Ubuntu 16.04下Qt5.14(C++)配置并调用python脚本_第3张图片

qt调用python实现画图

C++代码

#include 
#include "Python.h"
#include 

int main(int argc, char *argv[])
{
    QApplication a(argc,argv);
    Py_Initialize();    // 初始化

    // 将Python工作路径切换到待调用模块所在目录,一定要保证路径名的正确性
    PyRun_SimpleString("import sys");
    PyRun_SimpleString("sys.argv = ['python.py']");
    PyRun_SimpleString("sys.path.append('/home/ppr/Downloads/fuckpy/')");


    // 加载模块
    PyObject* pModule = PyImport_ImportModule("ab");
    PyErr_Print();


    // 加载函数
    PyObject* pv = PyObject_GetAttrString(pModule, "main");
    PyErr_Print();

    PyObject_CallFunction(pv,NULL);
    Py_Finalize();

    return a.exec();
}

需要特别注意的是
以下代码必须加入,不加入会有一堆报错等着你,这三句代码,是经历了好多坑后找到的。。。
并且不要在C++里去导入第三方模块,否则极有可能出错。

import matplotlib.pyplot as plt

Ubuntu 16.04下Qt5.14(C++)配置并调用python脚本_第4张图片

python代码

import matplotlib.pyplot as plt
import random
def main():
    print("start")
    plt.plot([1,2,1,2])
    print("end")
    plt.show()

上菜

Ubuntu 16.04下Qt5.14(C++)配置并调用python脚本_第5张图片

你可能感兴趣的:(环境配置,python,qt,ubuntu,python,C++,matplotlib)