【Python】【PySide2】多進程的實現 QProcess模塊,打開外部程序,傳入命令行參數

在使用 Qt For Python 編寫GUI時遇到個問題,GUI界面有一個主進程,在不使用QProcess, QThread情況下,都是默認單線程與單進程的。例如新建一個按鈕,該按鈕調用一個槽函數 是 time.sleep( 10000) ,那在這個槽函數運行完之前,整個UI界面都是假死狀態(無響應),要等整個槽函數運行完後才能GUI恢復控制。

所以在有一個槽函數需要消耗很多時間的情況下,必須要開一個新進程或者新線程來負責這個耗時的函數,才能不影響主界面。

我這裏使用的多進程的方法,PySide2.QtCore.QProcess,

Qt For Python 官方文檔地址:https://doc.qt.io/qtforpython/PySide2/QtCore/QProcess.html?highlight=process#PySide2.QtCore.PySide2.QtCore.QProcess.arguments

 

# 這是某個槽函數,會打開這個exe程序,並傳入-d xxxx -a xxxx 的參數

def new_process(self):
    my_process = PySide2.QtCore.QProcess(self)
    my_process.setProgram("abc.exe")
    my_process.setArguments(['-d', filepath_1, '-a', filepath_2])
    my_process.start()
    

我照着官方文檔讀了很久,雖然關鍵的函數和流程都列出來了,但例子都是Qt C++的例子,實際在Python 中使用還是摸索了很久才成功,作爲踩坑記錄一下,希望對大家有幫助。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章