Programm beenden - Problem

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Benutzeravatar
Spaten
User
Beiträge: 52
Registriert: Samstag 27. Mai 2006, 11:35
Wohnort: Bremen
Kontaktdaten:

Sonntag 22. Oktober 2006, 17:30

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?
Python-Version: 2.5
Crush
User
Beiträge: 44
Registriert: Montag 1. Mai 2006, 11:32

Sonntag 22. Oktober 2006, 17:47

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
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

Sonntag 22. Oktober 2006, 17:51

du darfst nicht self.Close(True) benutzen, denn genau dies löst den EVT_CLOSE aus. Benutze

self.Destroy()
Benutzeravatar
Spaten
User
Beiträge: 52
Registriert: Samstag 27. Mai 2006, 11:35
Wohnort: Bremen
Kontaktdaten:

Sonntag 22. Oktober 2006, 18:40

Hey Danke für die schnellen Antworten,
die Tips sind Gold wert :D

funktioniert bestens, nochmal danke!
Python-Version: 2.5
Antworten