TreeView sencillo con ListStore (Python) Marta Maria Casetti mmcasetti@gmail.com 2012 Un TreeView mostrando un ListStore (ejemplo más simple) Daniel Mustieles daniel.mustieles@gmail.com 2011 - 2017 Nicolás Satragno nsatragno@gmail.com 2012 - 2013 Jorge González jorgegonz@svn.gnome.org 2011 TreeView sencillo con ListStore

Este TreeView muestra un ListStore sencillo con la señal de selección «changed» conectada.

Código usado para generar este ejemplo from gi.repository import Gtk from gi.repository import Pango import sys columns = ["First Name", "Last Name", "Phone Number"] phonebook = [["Jurg", "Billeter", "555-0123"], ["Johannes", "Schmid", "555-1234"], ["Julita", "Inca", "555-2345"], ["Javier", "Jardon", "555-3456"], ["Jason", "Clinton", "555-4567"], ["Random J.", "Hacker", "555-5678"]] class MyWindow(Gtk.ApplicationWindow): def __init__(self, app): Gtk.Window.__init__(self, title="My Phone Book", application=app) self.set_default_size(250, 100) self.set_border_width(10) # the data in the model (three strings for each row, one for each # column) listmodel = Gtk.ListStore(str, str, str) # append the values in the model for i in range(len(phonebook)): listmodel.append(phonebook[i]) # a treeview to see the data stored in the model view = Gtk.TreeView(model=listmodel) # for each column for i, column in enumerate(columns): # cellrenderer to render the text cell = Gtk.CellRendererText() # the text in the first column should be in boldface if i == 0: cell.props.weight_set = True cell.props.weight = Pango.Weight.BOLD # the column is created col = Gtk.TreeViewColumn(column, cell, text=i) # and it is appended to the treeview view.append_column(col) # when a row is selected, it emits a signal view.get_selection().connect("changed", self.on_changed) # the label we use to show the selection self.label = Gtk.Label() self.label.set_text("") # a grid to attach the widgets grid = Gtk.Grid() grid.attach(view, 0, 0, 1, 1) grid.attach(self.label, 0, 1, 1, 1) # attach the grid to the window self.add(grid) def on_changed(self, selection): # get the model and the iterator that points at the data in the model (model, iter) = selection.get_selected() # set the label to a new value depending on the selection self.label.set_text("\n %s %s %s" % (model[iter][0], model[iter][1], model[iter][2])) return True class MyApplication(Gtk.Application): def __init__(self): Gtk.Application.__init__(self) def do_activate(self): win = MyWindow(self) win.show_all() def do_startup(self): Gtk.Application.do_startup(self) app = MyApplication() exit_status = app.run(sys.argv) sys.exit(exit_status)
Métodos útiles para un widget TreeView

El widget «TreeView» está construido alrededor de un diseño Modelo/Vista/Controlador: el Modelo almacena los datos; la Vista obtiene las notificaciones de cambio y muestra el contenido del modelo; El Controlador; finalmente, cambia el estado del modelo y le notifica a la vista de estos cambios. Para más información, y para una lista de métodos útiles del «TreeModel», consulte la .

En la línea 44, la señal "changed" se conecta a la función de retorno de llamada on_changed() usando widget.connect(señal, función de retorno de llamada). Consulte la para una explicación más detallada.

Referencias de la API

En este ejemplo se usa lo siguiente:

GtkTreeView

GtkTreeModel

GtkListStore

GtkCellRendererText

GtkTreeViewColumn

pygobject: vinculaciones de Python para introspección de GObject

Tipografías