Cómo usar: TreeView

Veamos cómo cargar y mostrar datos en un TreeView.

Para todos los ejemplos vamos a usar una simple ventana con un TreeView y un botón hechos con Glade:

Popular directamente
Para agregar elementos al TreeView se siguen tres pasos: crear una lista con los elementos, crear las columnas necesarias para el TreeView, y por último asignarles la lista y las columnas creadas. Veamos cómo hacerlo:

Creamos la lista y le agregamos los elementos:
   def populartreeview(self):
      lista=gtk.ListStore(str)
      lista.append(["Negro"])
      lista.append(["Verde"])
      lista.append(["Blanco"])


Creamos la columna:
      render=gtk.CellRendererText()
      columna=gtk.TreeViewColumn("Colores",render,text=0)


Asignamos la lista y la columna al TreeView:
      self.vista.set_model(lista)
      self.vista.append_column(columna)
      self.vista.show()


Obs.: si necesitamos que hayan más columnas, sólo debemos modificar la forma en que se crea la lista, por ejemplo, para almacenar una cadena y un número entero en cada elemento, usamos lista = gtk.ListStore(str,int). Además hay que crear las columnas necesarias y asignarlas al TreeView. Ejemplo:

   def populartreeview(self):
      lista=gtk.ListStore(str,int)
      lista.append(["Negro",12])
      lista.append(["Verde",11])
      lista.append(["Blanco",13])

      render=gtk.CellRendererText()
      columna1=gtk.TreeViewColumn("Colores",render,text=0)
      columna2=gtk.TreeViewColumn("Precios",render,text=1)

      self.vista.set_model(lista)
      self.vista.append_column(columna1)
      self.vista.append_column(columna2)
      self.vista.show()




Obtener elementos
Usemos el botón que creamos para obtener el elemento seleccionado de la vista.

Nos aseguramos de darle el manipulador on_boton_clicked a la señal clicked del botón y escribimos el siguiente método para obtener la selección:

   def on_boton_clicked(self, widget, data=None):
      (model,iter)=self.vista.get_selection().get_selected()
      if iter != None:
         print list(model[iter])


Podemos hacer lo que queramos con los datos obtenidos, en el ejemplo simplemente los imprimimos.

Descargar programa ejemplo

10 comentarios: (+add yours?)

angelbotto dijo...

Muy bueno muchas gracias!!!

Moritatux dijo...

Excelente tutorial, lo he probado y funciona a la perfección. Se programar en C y C++, pero con esto me dieron ganas de aprender Python..

excelente blog y si me permites te agrego a mi blogroll para leerte con más frecuencia.

ito123456789 dijo...

Muchas gracias a vos por leerlo! y claro me parecería excelente que me agregues..

juannaviap dijo...

Gracias por el tutorial!
pero como se puede eliminar una fila?

ito123456789 dijo...

Hola! para eliminar una fila sólo hacé que se elimine la entrada en la base de datos y luego actualizá la vista (que cargue los datos de nuevo).

Anónimo dijo...

bien ahi chera'a

Anónimo dijo...

Soy Felipe y he estado jugando con Glade, Python y GTK y me ha servido lo que has mostrado aquí, pero quiero ir por mas.

Con lo que has mostrado he podido copiar los datos en entradas de textos para poder así editar los datos, lo que quiero hacer es poder editar los datos en el mismo TreeView. Lo que puedo hacer es al hacer click sobre la celda editar un valor en particular, pero al salir de la celda este vuelve a su valor inicial.

¿Existe alguna forma de hacerlo?

Agradecería la ayuda ;)

ito123456789 dijo...

Hola Felipe, disculpame por tardar en responder. En ese caso lo que está pasando es que no guardás el dato que editaste en ningún lugar, tenés que hacer que se guarde en tu base de datos y después inmediatamente se vuelva a leer la misma para que se muestre el cambio.

Witchy Hxryn dijo...

ya no esta disponible la descarga, muestra el siguiente mensaje:

¡Ay!

Lo sentimos, estás intentando acceder a una función que ya no se admite.

Unknown dijo...

esta bueno!!!!
gracias

Publicar un comentario