2014-06-10 23 views
2

어떻게 QProcess.finished()를 사용하여 다른 Python3 스크립트를 호출 할 수 있습니까?Python 3 및 PyQt에서 QProcess.finished() 사용

여기 스크립트는 내가 전화 것 :

#!/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() 

내가 프로세스의

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() 

시작은, main.py에서 윈도우가 표시됩니다 작품을 볼 수 here과 같은 코드를 사용하는 스크립트를 호출하려면, 하지만 끝난 것 같아요. 해고 된 건 아니에요. main.py에서 창을 닫을 때 아무 반응이 없습니다

답변

2

You can't get a signal when you use startDetached() because you have no object. 대신에 보통의 start()를 사용하십시오.

제어 스크립트 내에서 QApplication도 시작해야합니다.

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_())