2016-04-08 10 views
0

Ich habe eine Frage über den Aufruf eines Prozesses und warten, bis dieses Programm schließt.Python - Prozessaufruf und warten

Es sollte so funktionieren:

Hauptprogramm und sekundäres Programm.

Das Hauptprogramm sollte das sekundäre Programm öffnen, indem Sie auf einen QPushButton klicken.

Dann erscheint das sekundäre Programm und Sie können es normalerweise verwenden.

In dem Moment, in dem Sie es schließen, (damit der Prozess beendet wird, indem Sie das Fenster verlassen), sollte das Hauptprogramm ebenfalls beendet werden.

Ich weiß, es gibt das Modul "Subprozess", aber ich verstehe nicht, wie man es benutzt. Die Dokumentation ist ein bisschen verrückt.

Thx für die Hilfe :)

+0

Warum schließen Sie nicht einfach das erste Programm unmittelbar nach dem zweiten Öffnung? Müssen Sie wirklich mit dem ersten Programm interagieren, während das zweite läuft? Wenn dies der Fall ist, wird dies die Dinge komplizierter machen, da die einfachsten Lösungen den ersten Prozess blockieren, während sie darauf warten, dass der zweite Prozess beendet wird. – ekhumoro

+0

@ekhumoro Nun, das funktioniert auch. Das erste Programm ist nur der Ausführende. Nachdem mein erstes Programm das zweite begonnen hat, kann das erste geschlossen werden. Es spielt keine Rolle, ob es offen oder geschlossen ist. Wie würdest du das machen? – freedome97

Antwort

0

Sie können dies versuchen.

import subprocess 
    subprocess.call('ping 192.168.132.133') 

In Python 3.X verwenden Sie subprocess.run(), das bevorzugt wird. Wenn Sie für erweiterte Fälle möchten, die run() nicht funktionieren, können Sie popen() direkt verwenden.

0

Wenn Sie nicht das erste Programm am Laufen halten müssen, können Sie es einfach sofort schließen, nachdem das zweite Programm zu öffnen:

if QtCore.QProcess.startDetached('prog2', ['arg1', 'arg2']): 
     QtWidgets.qApp.quit() 
    else: 
     print('ERROR: could not start prog2') 
Verwandte Themen