這個看你要求了,如果只是單純調(diào)用,和Qt沒什么關(guān)系,直接看python手冊中C、C++調(diào)用python相關(guān)的內(nèi)容就行了。
達坂城網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站開發(fā)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)建站于2013年創(chuàng)立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
如果你的python代碼中還需要操作Qt相關(guān)的東西,那么你需要的 PythonQt 這個第三方的模塊(概念上類似于Qt自己的QtScript模塊)
#include?QCoreApplication
//包含調(diào)用Python相應(yīng)的頭文件
#include?Python.h
int?main(int?argc,?char?*argv[])
{
QCoreApplication?a(argc,?argv);
//初始化Python解釋器,這是調(diào)用操作的第一步
Py_Initialize();
if(?!Py_IsInitialized()?){
return?-1;
}
//執(zhí)行單句Python語句,用于給出調(diào)用模塊的路徑,否則將無法找到相應(yīng)的調(diào)用模塊
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函數(shù)的指針
PyObject*?pFunhello?=?PyObject_GetAttrString(pModule,"hello");
if?(!pFunhello){
printf("Get?function?hello?failed\n");
return?-1;
}
//調(diào)用函數(shù),傳入?yún)?shù)為NULL
PyObject_CallFunction(pFunhello,NULL);
//銷毀Python解釋器,這是調(diào)用的最后一步
Py_Finalize();
return?a.exec();
}
作者:sleepyjoker
鏈接:
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
如果你是嵌入的話,應(yīng)該沒問題。python的庫會暴露c api的,你的qt程序照著python文檔中的embedded章節(jié)就好。 看樣子,你的是linux下的,不過一般頭文件就是include/python.h,怎么會是include/python2.7呢?你寫錯了吧。庫文件應(yīng)該是在lib下面。
因為process.start()函數(shù)實質(zhì)是采用命令行中"start XXX"的方式啟動XXX。這里的XXX僅僅適用于大部分的exe可執(zhí)行文件以及一些常用文件。對于py或者pyw文件都不行。
有兩種解決方案:
另外編寫一個bat用來啟動py文件,就可以使用start啟動這個bat就可以了;
使用另一個函數(shù)“QDesktopServices::openUrl”來啟動py文件。具體使用方法請自行百度。不做過多說明。