El uso del método de destrucción no funciona como se esperaba, ya que las devoluciones de llamada de "evento de eliminación" no se invocan en la ventana destruida, por lo que un editor, por ejemplo, no podrá preguntar al usuario si el archivo tiene que ser salvado
[3|[email protected]|~]python
Python 2.7.3 (default, Jul 24 2012, 10:05:38)
[GCC 4.7.0 20120507 (Red Hat 4.7.0-5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import gtk
>>> w = gtk.Window()
>>> w.show()
>>> def cb(w,e):
... print "cb", w, e
... return True
...
>>> w.connect ('delete-event', cb)
>>> w.destroy()
En el ejemplo anterior w.destroy invocando() no invocará la devolución de llamada, mientras hace clic en el botón "Cerrar" se invocará (y la ventana no se cerrará porque devolución de llamada devuelve True).
Por lo tanto, usted tiene que emiten tanto la señal y luego destruir el widget, si los gestores de señales devueltas Falso, por ejemplo:
if not w.emit("delete-event", gtk.gdk.Event(gtk.gdk.DELETE)):
w.destroy()