开发者社区> 问答> 正文

qt如何调用python

问题来源于python学习网

展开
收起
保持可爱mmm 2019-12-10 14:34:28 484 0
1 条回答
写回答
取消 提交回答
  • Qt是一个跨平台的c++图形用户界面应用程序框架,而Python是一门非常强大的编程语言,本文主要介绍了如何在OSX系统下Qt调用

    Python脚本。

    先上代码:

    #include //包含调用Python相应的头文件#include <Python.h>int main(int argc, char *argv[]){

    QCoreApplication a(argc, argv);

    //初始化Python解释器,这是调用操作的第一步

    Py_Initialize();

    if( !Py_IsInitialized() ){

    return -1;

    }

    //执行单句Python语句,用于给出调用模块的路径,否则将无法找到相应的调用模块

    PyRun_SimpleString("import sys");

    PyRun_SimpleString("sys.path.append('./')");//获取qt_python_fun.py模块的指针

    PyObject* pModule = PyImport_ImportModule("qt_python_fun");

    if (! pModule){

    printf("Can't open python file\n");

    return -1;

    }//获取hello函数的指针

    PyObject* pFunhello = PyObject_GetAttrString(pModule,"hello");

    if (!pFunhello){

    printf("Get function hello failed\n");

    return -1;

    }//调用函数,传入参数为NULL

    PyObject_CallFunction(pFunhello,NULL);//销毁Python解释器,这是调用的最后一步

    Py_Finalize();

    return a.exec();}

    之后我们新建一个名为qt_python_fun.py的python文件

    写入以下代码:

    #!/usr/bin/env python# -- coding: utf-8 --def hello():

    print "hello"
    

    此时我们的代码依旧无法运行,因为在C++中调用Python在编译时需要添加相关的路径,在OSX系统中,我们需要在后缀为.pro的文件中加入以下代码:

    INCLUDEPATH += -I /System/Library/Frameworks/Python.framework/Versions/2.7/HeadersLIBS += -L /System/Library/Frameworks/

    Python.framework/Versions/2.7/include/python2.7 -lpython2.7

    这时,我们的程序才正真可以运行

    以上只是最简单的调用,关于C/C++ 和Python之间的互相调用网上可以搜索到大量的资源以供学习。值得注意的是路径的添加,Qt是跨平台的图形用户界面应用程序,Python在Linux,OSX,Windows下的路径均有不同,而往往就是路径错误使得程序无法正常运行。

    2019-12-10 14:34:47
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载