Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/12/2010, 12:45
abcdefg
 
Fecha de Ingreso: marzo-2009
Mensajes: 79
Antigüedad: 15 años, 9 meses
Puntos: 0
Consulta botón salir

Hola de nuevo. Quería preguntarles porque en el siguiente fragmento de código al intentar salir del programa con el botón Cancelar, delete_event devuelve False pero destroy no es invocado. Saludos.

Código Python:
Ver original
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import gtk
  5.  
  6. class Programa:
  7.     def __init__(self):
  8.         self.ventana = gtk.Window(gtk.WINDOW_TOPLEVEL)
  9.         self.ventana.connect('delete_event', self.delete_event)
  10.         self.ventana.connect('destroy', self.destroy)
  11.  
  12.         self.ventana.set_title('Título de la ventana')
  13.         self.ventana.set_default_size(440, 250)
  14.         self.ventana.set_border_width(50)
  15.  
  16.         self.caja_v = gtk.VBox(True, 0)
  17.         self.etiqueta = gtk.Label('Bienvenido:')
  18.         self.entrada = gtk.Entry(20)
  19.         self.botonera_h = gtk.HButtonBox()
  20.         self.boton_aplicar = gtk.Button(stock=gtk.STOCK_APPLY)
  21.         self.boton_aplicar.connect('clicked', self.clicked, 'Botón Aplicar')
  22.         self.boton_cancelar = gtk.Button(stock=gtk.STOCK_CANCEL)
  23.         self.boton_cancelar.connect('clicked', self.clicked, 'Botón Cancelar')
  24.         self.boton_cancelar.connect("clicked", self.delete_event)
  25.  
  26.         self.ventana.add(self.caja_v)
  27.         self.caja_v.pack_start(self.etiqueta, True, True, 0)
  28.         self.caja_v.pack_start(self.entrada, True, True, 0)
  29.         self.caja_v.pack_start(self.botonera_h, True, True, 0)
  30.         self.botonera_h.add(self.boton_aplicar)
  31.         self.botonera_h.add(self.boton_cancelar)
  32.  
  33.     def main(self):
  34.         gtk.main()
  35.  
  36.     def show(self):
  37.         self.ventana.show_all()
  38.  
  39.     def delete_event(self, widget, data=None):
  40.         print 'delete_event'
  41.         return False
  42.  
  43.     def destroy(self, widget, data=None):
  44.         print 'destroy'
  45.         gtk.main_quit()
  46.  
  47.     def clicked(self, widget, data=None):
  48.         print data
  49.  
  50. if __name__ == '__main__':
  51.     programa = Programa()
  52.     programa.show()
  53.     programa.main()