Hallo Ich habe PyQt 4.8 unter Windows verwendet, um eine einfache GUI-Anwendung zu erstellen. Das GUI (Hauptfenster) hat eine Schaltfläche und ein QLineEdit-Widget. Durch Drücken der Schaltfläche wird einfach eine Funktion aufgerufen, um den Inhalt des QLineEdit-Widgets zu verarbeiten. Bis jetzt funktioniert es gut. Mein Haupt wie folgt aussiehtEine qt Gui Anwendung programmatisch sauber schließen
class StartQt4App(QtGui.QMainWindow):
def process_stuff(self,param):
#Do stuff here
if __name__="__main__":
app=QtGui.QApplications(sys.argv)
myapplication=StartQt4App()
myapplication.show()
sys.exit(app.exec_())
py2exe verwenden kann ich eine ausführbare Windows-Datei z mygui_app.exe Jedoch habe ich es anpassen wollen schaffen, so dass es von der Windows-Kommandozeile ausgeführt werden können. dh wenn der Benutzer
Run mygui_app.exe „c: \ text_file.txt“
die Anwendung startet, diesmal ohne die GUI und verarbeitet automatisch die Parameter, die eingegeben wurde, wenn die Anwendung war namens.
Bisher das ist, was ich mit
gekommen sindclass StartQt4App(QtGui.QMainWindow):
def process_stuff(self,param):
#Do stuff here
def process_stuff_again(self,param):
#Do stuff here
return
if __name__="__main__":
if len(sys.argv)==1:
app=QtGui.QApplications(sys.argv)
myapplication=StartQt4App()
myapplication.show()
sys.exit(app.exec_())
else:
app=QtGui.QApplications(sys.argv)
myapplication=StartQt4App()
myapplication.process_stuff_again(param)
sys.exit(app.exec_())
Im Wesentlichen, wenn die Anwendung mit Parametern aufgerufen wurde ich will/muss nicht die GUI zeigen, rufen Sie einfach die Verarbeitungsfunktion. Sobald die Verarbeitung beendet ist, verlassen Sie sauber
Derzeit funktioniert es, zumindest so weit wie die Verarbeitung der Datei geht. Es wird jedoch nicht beendet, sobald die Verarbeitung abgeschlossen ist. Stattdessen bleibt das Programm aktiv (ich kann es mit dem Windows Task-Manager sehen).
Meine Frage ist, wie programmatisch ich die Anwendung beenden? damit es sich einmal sauber gemacht hat.
Ich habe experimentierten mit
- app.quit()
- app.exit()
- myapplication.exit()
- myapplication.quit()
None Arbeit, im Wesentlichen ist die Anwendung noch am Leben und Treten. In seiner Verzweiflung nahm ich die
sys.exit (app.exec_())
aus dem anderen Teil des Codes und jetzt stürzt nur, wie es die Datei verarbeitet und dann prompt stürzt . Sehr konsequent abstürzt.
Irgendwelche Vorschläge, wie man die Anwendung sauber schließt, wenn sie von der Befehlszeile aufgerufen wird?
Ich bin mir ziemlich sicher, dass dies in PyQt übersetzt nur um die Zeile 'QTimer.singleShot (0, app.quit)' kurz vor der Linie Aufruf 'app.exec _()' hinzufügen –