gtk.RESPONSE_OK no me funciona

Jose Francisco Gonzalez josefgon en gmail.com
Lun Feb 26 13:22:19 CET 2007


Ante todo un saludo ya que soy nuevo tanto en esta lista como en Python.
Para aprender he empezado un proyecto pero a la primera ya me estoy
volviendo un poco loco.

Me explico, tengo una ventana principal y con la opcion de abrir quiero que
me salga el dialogo de abrir archivo para seleccionar uno. En el codigo del
formulario principal he puesto este trozo de codigo para presentar y
gestionar el dialogo:

    def on_open(self, widget):
        try:
            sf = SelectFile()
            a = sf.run()
            if a == gtk.RESPONSE_OK:
                print 'ok'
            else:
                print "cancel"
        finally:
            sf.destroy()

Y el codigo del formulario de abrir archivo es este otro:

class SelectFile:

    def __init__(self):
        self.glade = gtk.glade.XML("prueba.glade")
        self.dlg = self.glade.get_widget("selectfile")
        self.glade.signal_autoconnect(self)

    def destroy(self):
        self.dlg.destroy()

    def run(self):
        return self.dlg.run()

    def on_btn_ok_clicked(self, widget):
        self.dlg.response(gtk.RESPONSE_OK)

    def on_btn_cancel_clicked(self, widget):
        self.dlg.response(gtk.RESPONSE_CANCEL)

Pues la variable a del formulario principal si pulso "Cancelar" si que vale
-6 que es el valor de RESPONSE_CANCEL pero si pulso aceptar la variable
siempre tiene el valor de 0. He probado a mirar en el codigo del formulario
de abrir archivo a ver cuanto vale el valor que devuelve self.dlg.run() y
pasa lo mismo asi que ya no se por donde tirar.

El dialogo de abrir archivo lo he creado con glade-3 por lo que al no
ponerme botones de aceptar y cancelar los he puesto yo y los he tenido que
controlar en el codigo, no se si sera lo mejor.

He probado a hacerlo por codigo con dialog = gtk.FileChooserDialog(...) y
asi si que devuelve bien los valores pero prefiero hacerlo de la otra forma
para tener todos los formularios juntos.

Una ultima cosa, es mejor tener un solo archivo .glade para todo el proyecto
donde esten todos los formularios o un archivo .glade por cada modulo de
codigo con el formulario correspondiente?
-- 
Saludos
José Francisco González




Más información sobre la lista de distribución Python-es