Sie sollten window.destroy()
verwenden, wenn Sie ein Fenster in PyGTK löschen (oder für irgendeine Art von Widget). Wenn Sie window.destroy()
aufrufen, gibt das Fenster automatisch ein delete-event
-Ereignis aus.
Außerdem muss bei der Ausgabe eines Signals für ein Ereignis mit PyGTK fast immer auch ein Ereignisobjekt an die emit-Methode übergeben werden (siehe pyGObject-Dokumentation für die emit-Methode ). Wenn versucht wird, ein gtk.gdk.Event(gtk.EVENT_DELETE)
an die emit-Methode eines Objekts für delete-event
zu übergeben, funktioniert es nicht. ZB:
Der beste Weg ist jedoch, einfach die del
-Anweisung zu verwenden, die das Fenster / Widget automatisch löscht und alle notwendigen Bereinigungen für Sie vornimmt. Dies ist mehr "pythonisch" als das Aufrufen von window.destroy (), was um einen Verweis auf ein zerstörtes Fenster herumgeht.
Die Methode destroy funktioniert nicht wie erwartet, da die 'delete-event' Callbacks für das zerstörte Fenster nicht aufgerufen werden. Ein Editor zum Beispiel hat keine Möglichkeit den Benutzer nach der Datei zu fragen gespeichert werden.
%Vor%Im obigen Beispiel ruft das Aufrufen von w.destroy () den Callback nicht auf, während das Klicken auf die Schaltfläche "close" es aufruft (und das Fenster wird nicht geschlossen, weil der Callback True zurückgegeben hat).
Sie müssen also sowohl das Signal ausgeben als auch das Widget zerstören, wenn die Signalbehandlungsroutinen False zurückgegeben haben, z. B.
%Vor%