我正在使用qt的python而且当Qprocess正常退出时我无法找到发出信号的方法,根据Pyqt文档,finish()信号可以带2个参数exitCode代码和exitStatus
这就是Pyqt文档中关于finished()信号的说法
http://pyqt.sourceforge.net/Docs/PyQt4/qprocess.html#finished
void finished(int,:: QProcess :: ExitStatus)
这是此信号的默认过载。
该过程结束时会发出此信号。 exitCode是进程的退出代码,exitStatus是退出状态。该过程完成后,QProcess中的缓冲区仍然完好无损。您仍然可以在完成之前读取该进程可能已写入的任何数据。
QProcess.ExitStatus
此枚举描述了QProcess的不同退出状态。
恒..................值.........说明
QProcess.NormalExit ....... 0 .......进程正常退出。
QProcess.CrashExit ........ 1 .......进程崩溃了。
我尝试使用这种语法,但它没有用
self.process.finished(0,QProcess_ExitStatus=0).connect(self.status)
备注:
状态只是任何插槽(任何操作)的符号,而不是特定的
更新:
为了理解问题我有多个进程(把它想象成队列)我需要python来执行第一个进程,如果前一个进程正常退出而不是强制退出使用kill(),则只需要移动到下一个进程或终止()
提前致谢
您不必在连接中指向符号,而是在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")