Ver Mensaje Individual
  #6 (permalink)  
Antiguo 06/01/2011, 08:55
Avatar de CapacProg
CapacProg
 
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 7 meses
Puntos: 71
Pregunta Respuesta: Consulta botón salir

Hola:

He copiado y pegado el código que mencionas haz corregido, pero al hacer click en el boton salir el programa se cuelga. He trabajado en el idle de python 2.7 y tengo todo lo necesario para trabajar con pygtk y gtk+.

He tenido este mismo problema con otras implementaciones, no entiendo porque no corre o si mi función de retrollamda es incorrecta (la función es la misma que tu usas).

Su pudieras darme algún alacance más te agradecería.



Cita:
Iniciado por razpeitia Ver Mensaje
No invoca a destroy, por que el evento es clicked, si el evento fuera delete entonces manda a llamar a destroy.

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