[pyar] Campos duplicados en GtkComboBox con Glade+Python

Wuelfhis Asuaje wasuaje en hotmail.com
Mie Mayo 11 10:47:08 ART 2011



> 2011/5/10 Carlos Joel Delgado Pizarro <carlosj2585 en gmail.com>:
> > 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
> >


Hola como estas
Ya pase por eso aqui mi solucion

def cmb1_click(self,w):                                       #la señal conectada al evento en la pantalla
    self.combo2.get_model().clear()                     #limpia el segundo combo siempre
        var1=self.combo1.get_active_text()
        print var1
        serv2=cmd_srv[var1]                                #comando especifico a ejecutar (en mi caso el segundo combo viene de un dict
        for srv1 in serv2:
            self.combo2.append_text(srv1[0])
    self.combo2.set_active(0)


Espero haya sido util

 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20110511/974b8609/attachment.html>


More information about the pyar mailing list