Cómo usar: TreeView

10 comentarios

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