qt调用python函数 qt for python教程

qt中c调用python是含类的模块导入怎么处理呢#include QCoreApplication
#include
Python.h
#include
iostream
using
namespace
std;
int
main(
int
argc,
char
【qt调用python函数 qt for python教程】argv[]) { QCoreApplication a(argc, argv);
//
初始化python模块
Py_Initialize();
if
( !
Py_IsInitialized() ) {
return
; }
//
导入test.py模块
PyObject* pModule = PyImport_ImportModule(
test
);
if
(!
pModule) { printf(
Cant open python file!\n
);
return
; }
//
获取test模块中的hello函数
PyObject* pFunhello= PyObject_GetAttrString(pModule,
hello
);
//
注释掉的这部分是另一种获得test模块中的hello函数的方法
//
PyObject* pDict = PyModule_GetDict(pModule);
//
if (!pDict) {
//
printf("Cant find dictionary.\n");
//
return -1;
//
//
PyObject* pFunhello = PyDict_GetItemString(pDict, "hello");
if
(!
pFunhello){ cout
Get function hello failed
endl;
return
; }
//
调用hello函数
PyObject_CallFunction(pFunhello,NULL);
//
结束,释放python
Py_Finalize();
return
a.exec(); }
Qt下无法调用python,打不开文件为什么#include QCoreApplication
//包含调用Python相应的头文件
#include Python.h
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//初始化Python解释器qt调用python函数,这是调用操作的第一步
Py_Initialize();
if( !Py_IsInitialized() ){
return -1;
}
//执行单句Python语句qt调用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函数:sleepyjoker
链接qt调用python函数:
来源qt调用python函数:简书
著作权归作者所有 。商业转载请联系作者获得授权,非商业转载请注明出处 。
Qt中怎么可以使用python吗这个看你要求了,如果只是单纯调用,和Qt没什么关系,直接看python手册中C、C调用python相关的内容就行了 。
如果你的python代码中还需要操作Qt相关的东西,那么你需要的 PythonQt 这个第三方的模块(概念上类似于Qt自己的QtScript模块)
QT中调用Python如果你是嵌入的话,应该没问题 。python的库会暴露c api的,你的qt程序照着python文档中的embedded章节就好 。看样子,你的是linux下的,不过一般头文件就是include/python.h,怎么会是include/python2.7呢?你写错了吧 。库文件应该是在lib下面 。
qt程序运行py文件#include Python.h
int main()
{
Py_Initialize();// 初始化
// 将Python工作路径切换到待调用模块所在目录,一定要保证路径名的正确性
string chdir_cmd = string("sys.path.append(\'/xxxxxxx/')");
// 加载模块
PyObject* moduleName = PyString_FromString("xx"); //模块名,不是文件名
PyObject* pModule = PyImport_Import(moduleName);
// 加载函数
PyObject* pv = PyObject_GetAttrString(pModule, "xxx");
// 调用函数
PyObject* pRet = PyObject_CallObject(pv, xxx);
Py_Finalize();
}
再qt里面包含头文件 ,初始化,引入py文件路劲,导入模块然后就可以执行里面的函数了,如果你想直接执行文件而不需要得到里面的结果直接调用:system("python xxx.py");就好了
在qt程序中怎么运行一个python程序因为process.start()函数实质是采用命令行中"start XXX"的方式启动XXX 。这里的XXX仅仅适用于大部分的exe可执行文件以及一些常用文件 。对于py或者pyw文件都不行 。
有两种解决方案:
另外编写一个bat用来启动py文件,就可以使用start启动这个bat就可以了;
使用另一个函数“QDesktopServices::openUrl”来启动py文件 。具体使用方法请自行百度 。不做过多说明 。
关于qt调用python函数和qt for python教程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读