[pyar] Campos duplicados en GtkComboBox con Glade+Python

Carlos Joel Delgado Pizarro carlosj2585 en gmail.com
Mar Mayo 10 17:16:12 ART 2011


Hola a todos.

Estoy diseñando un pequeño sistema usando Glade+Python, todo va bien, solo
que al momento de entrar a un formulario que contiene 2 GtkComboBox, tengo
problemas al  llenar los datos de uno de los GtkComboBox, uno sirve para
seleccionar provincias y el otro para seleccionar distritos, el cual cambia
de contenido, de acuerdo a la provincia seleccionada.

Ya busqué en Google, por ahí encontré que hay que limpiar el contenido del
modelo (que es del tipo gtk.ListStore) con el que se llena el segundo
GtkComboBox usando el metodo clear(), ya lo probé y no funciona (estuve
leyendo en DevHelp también).

También encontré[1] que Glade genera un atributo: <property name="items"
translatable="yes"></property> en el XML del formulario, pero no lo encontré
en el archivo Glade que estoy usando, así que tampoco puedo corregir el
problema.

Adjunto el código que llena el combo de Distritos cuando se cambie de
Provincia, y unos cuantos pantallazos[2].


    def on_cboProvincia_changed(self, widget):
        # -- Llenar el combo de distritos, obtener el id de la provincia
seleccionada
        id_prov =
self.cboProvincia.get_model()[self.cboProvincia.get_active()][0]
        print 'Se cambió a la provincia: ' + str(id_prov)
#        self.cboDistrito.get_model().clear()
        # -- Llenar el combo de distritos, de acuerdo a la provincia
seleccionada
        self.llenar_distritos(id_prov)
        pass

    def llenar_distritos(self, id_prov):
        # -- Recuperarla lista de distritos de la provincia elegida
        distritos = self.fx.listar_distritos(id_prov)
        print id_prov,
        print distritos
        #limpiar el combo
        modelo = gtk.ListStore(str) # Crear un ListStore para llenar el
combo
        modelo.clear()
        # -- Llenar el ListStore con los distritos obtenidos
        for dist in distritos:
            modelo.append([dist[1]])
        # -- Mostrar el contenido del combo
        self.cboDistrito.set_model(modelo)
        cell = gtk.CellRendererText()
        self.cboDistrito.pack_start(cell)
        self.cboDistrito.add_attribute(cell, 'text', 0)
        # -- Seleccionar el primer elemento del combo
        self.cboDistrito.set_active(0)
        pass

[1] http://www.mail-archive.com/pygtk@daa.com.au/msg15537.html
[2]
https://picasaweb.google.com/carlosj2585/PythonGlade?authkey=Gv1sRgCN2xjq_Pl8GllgE&feat=directlink


Saludos!

————————————————–
Carlos Joel Delgado Pizarro
http://carlosj2585.wordpress.com
http://pycj.wordpress.com (Python!)
PLUG - Peruvian Linux Users Group http://www.linux.org.pe
Mosoq Kallpa – Linux Users Group http://www.mosoqkallpa.org/
Linux User Registered # 460895
Ubuntu User Registered # 28720
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20110510/0ae759a6/attachment.html>


More information about the pyar mailing list