【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 中使用还是摸索了很久才成功,作为踩坑记录一下,希望对大家有帮助。

 

 

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