功能:用qtcreator呼叫python檔案。
1.環境:win10 64 位
python3.8 64位
mingw 64位 位數一定要匹配,如果是64位,全部為64位。包括環境變數中的設定值。2.pro 配置 路徑選擇 自己盤上的安裝路徑
win32:config(release, debug|release): libs += -l$$pwd/../../programdata/python/python38/libs/ -lpython38
else:win32:config(debug, debug|release): libs += -l$$pwd/../../programdata/python/python38/libs/ -lpython38_d
includepath += $$pwd/../../programdata/python/python38/libs
dependpath += $$pwd/../../programdata/python/python38/libs
includepath += $$pwd/../../programdata/python/python38/include
dependpath += $$pwd/../../programdata/python/python38/include
#win32-g++:config(release, debug|release): pre_targetdeps += $$pwd/../../programdata/python/python38/libs/libpython38.a
#else:win32-g++:config(debug, debug|release): pre_targetdeps += $$pwd/../../programdata/python/python38/libs/libpython38d.a
win32:!win32-g++:config(release, debug|release): pre_targetdeps += $$pwd/../../programdata/python/python38/libs/python38.lib
else:win32:!win32-g++:config(debug, debug|release): pre_targetdeps += $$pwd/../../programdata/python/python38/libs/python38_d.lib
3.main.cpp
1 #include "qtpyprj.h"
2 8 int main(int argc, char *ar**)
9 21 //2.匯入檔案模組 py檔案路徑的問題
22 pyobject * pmodule = pyimport_importmodule("qtpyprj"); //pmodule 呼叫的檔名,沒有字尾
23 if (!pmodule)
24
28 29 //3.呼叫函式無參的
30 pyobject * pfunc_run = pyobject_getattrstring(pmodule, "run"); //pfunc 呼叫的函式名
31 if (!pfunc_run || !pycallable_check(pfunc_run))
32
36 pyeval_callobject(pfunc_run, null);
37 38 /*qdebug()<
39 pyobject * pfunc_add = pyobject_getattrstring(pmodule, "add"); //pfunc 呼叫的函式名
40 if (!pfunc_add || !pycallable_check(pfunc_add))
41
45 46 //4. 函式呼叫是有兩種,一種傳引數的,一種不傳引數的。
47 //傳引數有兩種方法:
48 建立方法1
49 pyobject *arg3 =pytuple_new(2);
50 pyobject *arg1 = pylong_fromlong(1050);
51 pyobject *arg2 = pylong_fromlong(520);
52 53 pytuple_setitem(arg3,0,arg1);
54 pytuple_setitem(arg3,1,arg2);
55 56 建立方法2
57 // pyobject *args3 =py_buildvalue("",8.5,103.2);
58 呼叫python 的add函式
59 pyobject *fe=pyeval_callobject(pfunc_add, arg3); //pfunc 呼叫函式
60 返回值處理
61 float res2=0;
62 pyarg_parse(fe,"f",&res2);//是浮點數
63 64 輸出結果
5.python檔案
def run():
print("hello qt")
def add(a,b):
return a+b
qt呼叫import sys庫 用qt呼叫第三方庫
宣告 事先我已經自己動手寫了乙個簡單的dll檔案 mydll.dll c版介面的。並且用我前兩篇有關dll文章裡面的方法,從dll中匯出了導入庫 lib 檔案,dll中有兩個函式,原型如下 void helloworld 函式內部呼叫win32 api,功能是彈出乙個helloworld提示框 in...
Qt應用發布
通常情況下,使用qt開發應用都是採用動態編譯的方式來進行發布,發布應用的時候就需要將相應的動態鏈結庫檔案一起發布了。應用依賴於哪些dll檔案呢?一般來講,有qtcore4.dll qtgui4.dll之類的了。但是,由於應用可能涉及到其它的模組,如網路模組等。可以檢視乙個.pro檔案了解應用具體涉及...
Qt 關於Qt座標相關函式應用
qt提供了很多關於獲取窗體位置及顯示區域大小的函式,如 x 獲取窗體左上角的x座標位置 y 獲取窗體左上角的y座標位置 pos 獲取窗體左上角的x,y座標位置 rect 獲取窗體 區域的長寬,x,y始終為0 size 獲取窗體 區域的長寬 geometry 獲取窗體 區域的左上頂點和長寬 frame...