[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