Ich habe hier ein Applikation die nur ab und zu mal ein Fenster öffnet und vom User eine Eingabe abverlangt und den rest der Zeit im Hintergrund läuft.
Damit das Programm aber nicht abstrüzt, wenn plötzlich das Fenster weg ist, habe ich einen Eventhandler auf EVT_CLOSE, der entsprechend aussieht:
Code: Alles auswählen
def OnCloseWindow(self, event):
if event.CanVeto():
print "User closed window, hiding myself and abort sending"
event.Veto()
self.Show(False)
self.callerApp.sendAbort()
else:
## we can't veto the close-event
## this is not good but we will shutdown cleanly
self.callerApp.stop()
self.callerApp.ExitMainLoop()
Nun habe ich allerdings festgestellt, dass mein Programm damit auch den Shutdown des Betriebssystems verhindert (oder zumindest solange blockiert, bis selbiges den Thread abwürgt).
Gibt es eine möglichkeit zu unterscheiden, wann das Close-Event nur vom Fenster kommt, und wann es urspürnglich vom Betriebssystem kommt?