Programmgesteuert schließen gtk-Fenster
Wenn Sie ein sub-Fenster in GTK und Sie wollen, um es zu schließen programmgesteuert (z.B. drücken einer Schaltfläche speichern, oder die ESC-Taste), gibt es einen bevorzugten Weg um das Fenster zu schließen?
E. g.,
window.destroy()
# versus
window.emit('delete-event')
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie verwenden
window.destroy()
beim löschen ein Fenster, in PyGTK (oder für diese Angelegenheit, jede Art von widget). Wenn Sie anrufenwindow.destroy()
die Fenster Strahlen eindelete-event
event automatisch.Ferner, wenn ein signal ausstrahlt, für eine Veranstaltung mit PyGTK ist es fast immer erforderlich, um auch weiterzugeben ein event-Objekt an die emit-Methode (siehe pyGObject-Dokumentation für die emit-Methode). Wenn ein Versuch gemacht wird, passieren eine
gtk.gdk.Event(gtk.EVENT_DELETE)
auf ein Objekt der emit-Methode für einedelete-event
wird es nicht funktionieren. E. g:Vielleicht der beste Weg,, obwohl, ist einfach zu benutzen, die
del
- Anweisung, die automatisch zu löschen, die Fenster/widget und das notwendige Bereinigung für Sie. Dies zu tun ist mehr "pythonic" als aufrufenden Fensters.destroy() wird verlassen, um einen Verweis auf das zerstörte Fenster.Mit destroy-Methode funktioniert nicht wie erwartet, da der "delete-event" callbacks werden nicht aufgerufen, auf das zerstörte Fenster, damit Sie einen editor, zum Beispiel, wird nicht die chance haben, Fragen Sie den Benutzer, wenn die Datei gespeichert werden soll.
Im obigen Beispiel das aufrufen w.destroy() nicht aufrufen, callback, beim klicken auf die Schaltfläche "schließen" wird aufgerufen (und Fenster nicht schließen, weil callback True zurück).
So haben Sie beide ein signal auszusenden und zerstören Sie anschließend das widget, wenn der signal-Handler False zurückgibt,". e.g:
Für GTK 3.10 und höher.
gtk_window_close ()