2012-03-29 7 views
1

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?

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)

+0

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

+0

@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. –

+0

QtCore.QObject.connect (App, QtCore.SIGNAL ('überToQuit()'), ui.exit) funktioniert immer noch nicht ... – Extaze

Verwandte Themen