QT應用 12 QT呼叫python

2021-10-21 20:09:43 字數 2925 閱讀 4354

功能:用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...