【发布时间】:2018-12-20 22:43:12
【问题描述】:
我正在使用带有 qt 的 python,当 Qprocess 正常退出时我找不到触发信号的方法,根据 Pyqt 文档finished() 信号可以接受 2 个参数 exitCode 和 exitStatus
这就是 Pyqt 文档中关于finished() 信号的说明
http://pyqt.sourceforge.net/Docs/PyQt4/qprocess.html#finished
void 已完成 (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 来执行第一个进程,并且只有在前一个进程正常退出时才移动到下一个进程而不是强制退出使用杀死()或终止()
提前致谢
【问题讨论】:
-
self.process.finished[int, QProcess.ExitStatus].connect(self.status)或只是self.process.finished.connect(self.status)(获取默认值)。 -
感谢这个语法很有帮助我使用 self.process = QtCore.QProcess(self) self.process.finished[int,self.process.ExitStatus].connect(status) 并解决了问题但仍然一件事我想不通,为什么python以这种方式理解这种语法,我没有给它任何 ExitStatus 值给它他知道我是否需要为 NormalExit 或 CrashExit 执行插槽
-
您不需要这样做:只需使用
self.process.finished.connect(self.status),它就会做正确的事情。QProcess在发出信号时会自动发送正确的退出代码和状态。所以你只需要将finished连接到一个接受两个参数的槽,然后检查参数的值来决定你的代码接下来应该做什么。
标签: python python-3.x pyqt pyqt4 qprocess