Using QProcess.finished() in Python 3 and PyQt

独自空忆成欢 提交于 2020-01-02 09:27:58

问题


How can I use the QProcess.finished() to call a different Python3 script.

Here's the script I call:

#!/usr/bin/python

 from PyQt4.QtGui import QApplication
 from childcontrolgui import childcontrolgui

 def main():
   import sys
   app = QApplication(sys.argv)
   wnd = childcontrolgui()
   wnd.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
main()

To call the script I use the code as seen here

def properties(self):
    command="python3 ../GUI/main.py"
    self.process=QProcess()
    self.process.finished.connect(self.onFinished)
    self.process.startDetached(command)

def onFinished(self,  exitCode,  exitStatus):
    self.Check_Timer.stop()
    self.Logout_Timer.stop()
    self.Firstrun=True
    self.initControl()

Starting of the process works, the window from main.py is shown, but it seems, finished isn't fired. Nothing happens, when I close the Window from main.py


回答1:


You can't get a signal when you use startDetached() because you have no object. Use ordinary start() instead.

And don't forget to start QApplication within control script, too.

class Control(QObject):
    def properties(self):
        self.process=QProcess()
        self.process.finished.connect(self.onFinished)
        self.process.start('python3', ['../GUI/main.py'])

    def onFinished(self,  exitCode,  exitStatus):
        [...]

if __name__ == '__main__':
    app = QApplication(sys.argv)

    co = Control()
    co.properties()

    sys.exit(app.exec_())


来源:https://stackoverflow.com/questions/24148477/using-qprocess-finished-in-python-3-and-pyqt

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!