Buenas tardes, mi nombre es Andreina Mejía. Estoy realizando una aplicación con interfaz hecha en Glade 3.6.7 y PyGTK. Para exponer mi problema, realicé dos pruebas pequeñas que les muestro a continuación:
Hice una interfaz realmente sencilla en formato Libglade, una ventana con un botón insertado dentro de una tabla como se puede apreciar en http://www.flickr.com/photos/22491...@n06/sets/72157623276353544/detail/ El botón Aceptar muestra la ventana de diálogo con textview. Todo funciona bien, excepto el destroy de la ventana de diálogo, porque cuando le doy click por segunda vez a la ‘X’ sale en la consola: “Fallo de segmentación” El archivo .py es el siguiente: #!/usr/bin/env python # -*- coding: utf-8 -*- #Importacion de modulos import pygtk pygtk.require('2.0') import gtk, gtk.glade, inspect, sys class Ventana: def __init__(self): self.w_tree = gtk.glade.XML('Prueba.glade') self.Ventana = self.w_tree.get_widget('Ventana') self.Aceptar = self.w_tree.get_widget('Aceptar') #Ventana que se muestra al pulsar el boton Aceptar de la ventana principal self.Dialogo = self.w_tree.get_widget('Dialogo') self.Acepta = self.w_tree.get_widget('Acepta') self.Cancelar = self.w_tree.get_widget('Cancelar') self.texto = self.w_tree.get_widget('texto') #Se hacen todas las conexiones con las señales self.w_tree.signal_autoconnect(dict(inspect.getmembers(self))) def on_Ventana_destroy(self,*args): gtk.main_quit() def on_Aceptar_clicked(self,*args): self.Dialogo.show() def on_Dialogo_close(self,*args): self.Dialogo.hide() def on_Cancelar_clicked(self,*args): self.Dialogo.hide() def on_Acepta_clicked(self,*args): self.Dialogo.hide() def main(self,*args): self.Ventana.show() gtk.main() if __name__=="__main__": app = Ventana() app.main() Inicialmente probé con radiobuttons insertados en una caja horizontal en la ventana de diálogo, pero da el mismo problema, por eso en el ejemplo cambié de contenedor y de widget a ver qué pasaba, pero sigue dando el mismo error. Hablé con un amigo y me dijo que a lo mejor podía ser un problema con Libglade y que mejor intentara con GtkBuilder. Hice exactamente la misma interfaz y lo corrí, doy click por segunda vez a la ‘X’ de la ventana de diálogo y aparece la ventana vacía que se ve en el enlace de flirck. No hay ningún otro fallo en la corrida. El archivo .py es el siguiente: #!/usr/bin/env python # -*- coding: utf-8 -*- #Importacion de modulos import pygtk pygtk.require('2.0') import gtk, gtk.glade, inspect, sys class Ventana: def __init__(self): self.glade_file = "Prueba_gb.glade" self.glade = gtk.Builder() self.glade.add_from_file(self.glade_file) self.Ventana = self.glade.get_object('Ventana') self.Aceptar = self.glade.get_object('Aceptar') #Ventana que se muestra al pulsar el boton Aceptar de la ventana principal self.Dialogo = self.glade.get_object('Dialogo') self.Acepta = self.glade.get_object('Acepta') self.Cancelar = self.glade.get_object('Cancelar') self.texto = self.glade.get_object('texto') #Se hacen todas las conexiones con las señales self.Ventana.connect("destroy",self.__on_Ventana_destroy) self.Aceptar.connect("clicked",self.__on_Aceptar_clicked) self.Dialogo.connect("close",self.__on_Dialogo_close) self.Cancelar.connect("clicked",self.__on_Cancelar_clicked) self.Acepta.connect("clicked",self.__on_Acepta_clicked) #Muestra todos los widgets self.Ventana.show_all() def __on_Ventana_destroy(self,*args): gtk.main_quit() def __on_Aceptar_clicked(self,*args): self.Dialogo.show() def __on_Dialogo_close(self,*args): self.Dialogo.hide() def __on_Cancelar_clicked(self,*args): self.Dialogo.hide() def __on_Acepta_clicked(self,*args): self.Dialogo.hide() def main(self,*args): #self.Ventana.show() gtk.main() if __name__=="__main__": app = Ventana() app.main() La verdad no sé qué está pasando, pero cada vez que en Glade hago una ventana que “llama” a otra ventana pasa lo mismo. Tengo apenas unos meses trabajando en esta herramienta y programando en PyGTK. Agradezco de antemando su receptividad. Muchas gracias! P.D: Disculpen lo extenso del correo…
_______________________________________________ Python-es mailing list [email protected] http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
