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