Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/12/2010, 09:01
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Consulta diálogo de confirmación

Es por que por un lado tienes el evento delete y por otro lado tienes el destroy.
Como puedes ver en el hello word
Código Python:
Ver original
  1. # Here we connect the "destroy" event to a signal handler.  
  2. # This event occurs when we call gtk_widget_destroy() on the window,
  3. # or if we return FALSE in the "delete_event" callback.

En el programa de arriba si te das cuenta no tiene un evento destroy, por eso es que lo pone en el evento delete.
Modifique el programa y hace exactamente lo mismo. Pero como puedes ver ahora tiene un evento destroy. Que en caso anterior no tenia.
Código Python:
Ver original
  1. import pygtk
  2. pygtk.require("2.0")
  3. import gtk
  4.  
  5. class UI(object):
  6.     def __init__(self):
  7.         self.label = gtk.Label("Hello world!")
  8.         self.window = self.make_window()
  9.         self.window.show_all()
  10.  
  11.     def make_window(self):
  12.         window = gtk.Window()
  13.         window.set_title("Hi!")
  14.         window.set_default_size(200, 100)
  15.  
  16.         window.connect("destroy", gtk.main_quit)
  17.         window.connect("delete-event", self.win_close, None)
  18.  
  19.         window.add(self.label)
  20.  
  21.         return window
  22.  
  23.     def start(self):
  24.         gtk.main()
  25.  
  26.     def win_close(self, widget, event, data):
  27.         dialog = gtk.MessageDialog(self.window, gtk.DIALOG_MODAL,
  28.                                    gtk.MESSAGE_INFO, gtk.BUTTONS_YES_NO,
  29.                                    "Quit?")
  30.         dialog.set_title(":(")
  31.  
  32.         response = dialog.run()
  33.         dialog.destroy()
  34.         if response == gtk.RESPONSE_YES:
  35.             return False # returning False makes "destroy-event" be signalled
  36.                          # for the window.
  37.         else:
  38.             return True # returning True avoids it to signal "destroy-event"
  39.        
  40. def main():
  41.     myUI = UI()
  42.     myUI.start()
  43.  
  44.     print "Now we're outside the UI, but still in the program"
  45.  
  46. main()