pygtk: Sobre los treeviews

Milton Galo Patricio minoztro en gmail.com
Lun Feb 12 09:05:29 CET 2007


Hola Mario:

> Tal vez no me explique muy bien, y voy a tratar de hacerlo sin extenderme
> mucho...
> He diseñado una interfaz desde el glade, por un lado he insertado un
> componente treeview para mostrar la lista de catalogos o tablas, y por el
> otro lado he insertado otro donde mostrare los registros que hay por cada
> tabla.

ok..hasta ahí entiendo lo que haces...yo también trabajo con un
diseñador de interfaces.

>
> pero cada tabla tiene campos diferentes, y yo quiero que en el mismo
> treeview se puedan mostrar dichos campos y hacer el treeview completamente
> dinamico.

Claro aca a lo que te refieres es al treeview y no al modelo que sería
el gtk.ListStore o gtk.TreeStore


>
> ya entendi que con el codigo que se muestra en el hilo se logra poner los
> campos, mi duda es, si aun que yo haya diseñado la interfaz en glade puedo
> usar el codigo de ejemplo, aun asi, lo probare y les dire que resultado
> obtuve

bueno habría que leerlo con más detención, pero en realidad ese código
no te sirve para hacer lo que quieres, ya que en ese código las
columnas son estáticas....claro en el modelo no tienes
problemas...pero que pasa si la nueva tabla tiene una columna
más..como modificamos la estructura de nuestro treeview..bueno a
simple vista puedes ver las funciones de:

remove_column [0] y append_column [1]

[0] http://www.pygtk.org/docs/pygtk/class-gtktreeview.html#method-gtktreeview--remove-column

[1] http://www.pygtk.org/docs/pygtk/class-gtktreeview.html#method-gtktreeview--append-column

entonces quizás cada vez que cambies de tabla {como dices tu lado
izquierdo}, debas construir nuevamente la estructura de tu treeview.

algunos método que siempre utilizo para ordenarme un poquito, son:

	def fgn_llenar_modelo_guia_despacho(self, vpo_resultado):
		self.vpo_modelo_guia_despacho.clear()

		for i in vpo_resultado:

			self.vpo_modelo_guia_despacho.append([i[0],i[2],i[3],[4]])

		return
	
	def fgn_define_vista_guia_despacho(self):

		lbl = unicode('Número')

		column = gtk.TreeViewColumn(lbl.encode('utf-8'),
gtk.CellRendererText(), text=0)

		self.treeviewGuiaDespacho.append_column(column)
		lbl = unicode('Rut cliente')

		column = gtk.TreeViewColumn(lbl.encode('utf-8'),
gtk.CellRendererText(), text=1)

		self.treeviewGuiaDespacho.append_column(column)
		lbl = unicode('Fecha emisión')

		column = gtk.TreeViewColumn(lbl.encode('utf-8'),
gtk.CellRendererText(), text=2)

		self.treeviewGuiaDespacho.append_column(column)
		lbl = unicode('Precio total')

		column = gtk.TreeViewColumn(lbl.encode('utf-8'),
gtk.CellRendererText(), text=3)

		self.treeviewGuiaDespacho.append_column(column)

	def fgn_crea_modelo_guia_despacho(self):

		self.vpo_modelo_guia_despacho = gtk.ListStore(str, str, str, str)

		self.treeviewGuiaDespacho.set_model(self.vpo_modelo_guia_despacho)



claro está que primero llamo a crea_modelo_guia_despacho, luego a
define_vista_guia_despacho y luego llenar_modelo_guia_despacho...lo
que se me ocurre es hacer dinámico el método de
define_vista_guia_despacho {no lo sé, guardando la definición o nombre
de cada columna en una lista o quizás en un diccionario}.

Espero que te sirva la ayuda...si estoy pelando el cable disculpame ya
son las 05:03 am en mi país, salu2!!
-- 
Milton Inostroza Aguilera




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