Ich entwickle eine Python-Anwendung und öffne Ports mit uPnP. Das Problem besteht darin, dass der Port immer noch geöffnet wird, wenn die Anwendung gezwungen wird, vom Prozess geschlossen zu werden. Also suche ich nach einem Ereignis in PyQt (oder etwas anderem), um einige Aktionen auszuführen, wenn der Prozess beendet wird. Achte darauf, dass ich nicht über den Schließen-Button spreche.Wie kann ich benachrichtigt werden, dass der Prozess in Python mit PyQt beendet wird?
1
A
Antwort
2
QApplications aboutToQuit Signal scheint genau für diesen Zweck gebaut werden. Fügen Sie Ihrem Code einfach einen Slot hinzu und verbinden Sie sich mit diesem Signal. Ihr Slot sollte benachrichtigt werden, bevor die Anwendung beendet wird.
Aus der pyqt docs:
Dieses Signal ausgesendet wird, wenn die Anwendung um die Hauptereignisschleife zu beenden, z.B. wenn die Ereignisschleife auf Null fällt. Dies kann entweder nach einem Aufruf von quit() aus der Anwendung oder wenn die Benutzer die gesamte Desktopsitzung beenden.
Das Signal ist besonders nützlich, wenn Ihre Anwendung eine letzte Bereinigung durchführen muss. Beachten Sie, dass in diesem Zustand keine Benutzerinteraktion möglich ist.
(Hervorhebung von mir)
Verwandte Themen
- 1. Python-Prozess wird nicht beendet
- 2. Wie benachrichtigt werden, wenn scrollToRowAtIndexPath beendet
- 3. Wie kann ein Prozess abgebrochen werden, ohne dass eine Ausnahme "Prozess wurde beendet" angezeigt wird?
- 4. Wie werden Dateiobjekte in Python bereinigt, wenn der Prozess beendet wird?
- 5. Wie kann ich benachrichtigt werden, wenn eine UIView sichtbar wird?
- 6. wie verhindert werden kann, dass Mocha den Prozess mit Status 1 beendet
- 7. Prozess wird nicht beendet, wenn ich Queue
- 8. Wie erhalten Sie .gcda-Dateien, wenn der Prozess beendet wird?
- 9. Wie kann ich über eine Bannerbenachrichtigung in iOS benachrichtigt werden?
- 10. PYTHON Wie erkenne ich, wenn ein Prozess beendet wurde?
- 11. Wie kann ich benachrichtigt werden, wenn der Benutzer die Bearbeitung einer Zelle in einem NSTableView beendet hat?
- 12. Wird Prozess/Thread-Release-Mutex beendet?
- 13. Wie kann ich benachrichtigt werden, wenn der Speicherplatz in einer EBS-Instanz knapp wird?
- 14. Wie kann ich ein Skript schreiben, um HSQLDB laufen zu lassen, falls der Prozess beendet wird
- 15. "Git Log" -Befehl in Powershell - Prozess kann nicht beendet werden
- 16. Python: Menü kann nicht beendet werden - Benutzereingabe
- 17. Angular2 - Wie benachrichtigt werden, dass eine Komponente den Fokus verliert
- 18. Prozess wurde beendet, aber der Puffer wird noch gedruckt, C#
- 19. Node.js-Prozess wird bei AWS-Instanzen beendet
- 20. Wie warten, bis der Prozess mit IO.popen beendet ist?
- 21. Wie kann verhindert werden, dass eine Bat-Datei vorzeitig beendet wird?
- 22. Wie kann ich meiner Cocoa-Anwendung mitteilen, dass sie innerhalb der Anwendung selbst beendet werden soll?
- 23. FitClient: externer Prozess beendet, bevor eine Verbindung hergestellt werden kann
- 24. Wie kann ich feststellen, ob ein Prozess beendet wurde?
- 25. wird programmgesteuert benachrichtigt, wenn die Verarbeitung beendet ist
- 26. Python Prozess wird nicht atexit
- 27. Process.Close() erzeugt Prozess nicht beendet wird, C#
- 28. Thread beendet Event in Python
- 29. SIGCHLD verstehen, wenn der untergeordnete Prozess beendet wird
- 30. Verwalten Sie eine .NET-App so, dass sie ordnungsgemäß beendet wird, wenn sie beendet/beendet wurde
Sorry, das nicht funktioniert, ich habe das: QtCore.QObject.connect (Mainwindow, QtCore.SIGNAL ('aboutToQuit()'), self.exit); wo MainWindow ist QMainWindow, und self.exit ist eine Funktion, die etwas Text druckt. :/ – Extaze
@Extaze aboutToQuit ist, wenn das Programm beendet wird, nicht das Hauptfenster. Um aboutToQuit zu verwenden, müssen Sie sich mit dem Signal aboutToQuit Ihrer QApplication verbinden. –
QtCore.QObject.connect (App, QtCore.SIGNAL ('überToQuit()'), ui.exit) funktioniert immer noch nicht ... – Extaze