Seite 1 von 1

Programm beenden - Problem

Verfasst: Sonntag 22. Oktober 2006, 17:30
von Spaten
Hallo nochmal :)
ich habe hundertfach die Suche beansprucht und Google benutzt,
aber irgendwie kriege ich es nicht richtig hin, das [x] an der Oberen Ecke des
Fensters an eine Methode zu binden, um Dinge wie die Fensterposition zu speichern.
Das habe ich bisher:

Code: Alles auswählen

        self.Bind(wx.EVT_CLOSE, self.__onQuit, id = ID_QUIT)

def __onQuit(self,event):
        self.__saveSettings()
        print "schliessen" # zum Testen
        self.Close(True)
Das Problem ist, dass wenn ich den EVT_CLOSE mit ID binde, die Methode
nicht aufgerufen wird und wenn ich den Event ohne ID binde, wird die Methode
so oft aufgerufen, dass ich eine Fehlermeldung
maximum recursion depth exceeded
bekomme.

Kann mir da jemand bei diesem "banalen" Problem helfen?

Verfasst: Sonntag 22. Oktober 2006, 17:47
von Crush
hi Spaten

probier doch mal, die Methode ohne das "id = ID_QUIT" zu binden und anstelle von "self.Close(True)" (was die Rekursion auslöst, wenn ich mich nicht täusche) "self.Destroy()" hinzuschreiben.

Gruss Crush

Verfasst: Sonntag 22. Oktober 2006, 17:51
von DatenMetzgerX
du darfst nicht self.Close(True) benutzen, denn genau dies löst den EVT_CLOSE aus. Benutze

self.Destroy()

Verfasst: Sonntag 22. Oktober 2006, 18:40
von Spaten
Hey Danke für die schnellen Antworten,
die Tips sind Gold wert :D

funktioniert bestens, nochmal danke!