我使用python,当Qprocess正常退出时,我无法找到触发信号的方法,根据Pyqt文档,成品()信号可以使用2个参数exitCode和exitStatus
这就是Pyqt文档对finished()信号的描述
http://pyqt.sourceforge.net/Docs/PyQt4/qprocess.html#finished
无效已完成(int,:QProcess::ExitStatus)
这是这个信号的默认过载。 此信号将在进程结束时发出。exitCode是进程的退出代码,exitStatus是退出状态。在进程完成后,QProcess中的缓冲区仍然完好无损。您仍然可以读取进程在完成之前可能已经写入的任何数据。
QProcess.ExitStatus
这个枚举描述了QProcess的不同退出状态。 Constant..................Value.........Description QProcess.NormalExit..0.......The过程正常退出。 QProcess.CrashExit........1.......The进程崩溃。
我试着用这个语法,但它不起作用
self.process.finished(0,QProcess_ExitStatus=0).connect(self.status)备注:
状态只是任何插槽(任何动作)的符号,而不是特定的东西。
更新:
为了了解问题所在,我有多个进程(把它看作队列),我需要python来执行第一个进程,并且只有在以前的进程正常退出时,才会移动到下一个进程,而不是强制使用杀死()或终止()退出。
提前感谢
发布于 2018-12-20 23:42:18
在pyqtSlot的帮助下,您不必指向连接中的符号,而必须指向槽中的符号。
from PyQt4 import QtCore
class Helper(QtCore.QObject):
def __init__(self, parent=None):
super(Helper, self).__init__(parent)
self.process = QtCore.QProcess(self)
self.process.start("ping -c 4 google.com")
self.process.finished.connect(self.status)
@QtCore.pyqtSlot(int, QtCore.QProcess.ExitStatus)
def status(self, exitCode, exitStatus):
print(exitCode, exitStatus)
QtCore.QCoreApplication.quit()
if __name__ == '__main__':
import sys
app = QtCore.QCoreApplication(sys.argv)
h = Helper()
sys.exit(app.exec_())更新:
from PyQt4 import QtCore
class Helper(QtCore.QObject):
def __init__(self, parent=None):
super(Helper, self).__init__(parent)
self.process = QtCore.QProcess(self)
self.process.start("ping -c 4 google.com")
self.process.finished.connect(self.on_finished)
@QtCore.pyqtSlot(int, QtCore.QProcess.ExitStatus)
def on_finished(self, exitCode, exitStatus):
if exitStatus == QtCore.QProcess.NormalExit:
self.status()
def status(self):
print("status")https://stackoverflow.com/questions/53877044
复制相似问题