如果你是嵌入的话,应该没问题。python的库会暴露c api的,你的qt程序照着python文档中的embedded章节就好。 看样子,你的是linux下的,不过一般头文件就是include/python.h,怎么会是include/python2.7呢?你写错了吧。库文件应该是在lib下面。
历下网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、响应式网站设计等网站项目制作,到程序开发,运营维护。创新互联公司从2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司。
因为process.start()函数实质是采用命令行中"start XXX"的方式启动XXX。这里的XXX仅仅适用于大部分的exe可执行文件以及一些常用文件。对于py或者pyw文件都不行。
有两种解决方案:
另外编写一个bat用来启动py文件,就可以使用start启动这个bat就可以了;
使用另一个函数“QDesktopServices::openUrl”来启动py文件。具体使用方法请自行百度。不做过多说明。
答:我知道目前你应该就是用qt designer设计好了界面,然后你的Python代码是PyCharm,那么要将两者连接起来的话,有两种方法。
使用pyuic功能,这个功能需要你在PyCharm上面配置一下pyqt,可以将Qt的UI文件转化为一个Python的类,然后你就可以直接在你的工程里面引用这个类;
无需将UI文件转化为Python中的类,而只需要直接加载该UI文件就可以了,使用如下代码,如图红框所示,其中涉及到PyQt.uic的loadUi类。
直接加载UI文件
希望对你有帮助~
这个看你要求了,如果只是单纯调用,和Qt没什么关系,直接看python手册中C、C++调用python相关的内容就行了。
如果你的python代码中还需要操作Qt相关的东西,那么你需要的 PythonQt 这个第三方的模块(概念上类似于Qt自己的QtScript模块)
#include QCoreApplication
//包含调用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();
}
作者:sleepyjoker
链接:
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
#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");就好了