首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QProcess正常出口

QProcess正常出口
EN

Stack Overflow用户
提问于 2018-12-20 22:43:12
回答 1查看 1.2K关注 0票数 2

我使用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进程崩溃。

我试着用这个语法,但它不起作用

代码语言:javascript
复制
self.process.finished(0,QProcess_ExitStatus=0).connect(self.status)

备注:

状态只是任何插槽(任何动作)的符号,而不是特定的东西。

更新:

为了了解问题所在,我有多个进程(把它看作队列),我需要python来执行第一个进程,并且只有在以前的进程正常退出时,才会移动到下一个进程,而不是强制使用杀死()或终止()退出。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-20 23:42:18

在pyqtSlot的帮助下,您不必指向连接中的符号,而必须指向槽中的符号。

代码语言:javascript
复制
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_())

更新:

代码语言:javascript
复制
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")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53877044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档