Simple TreeView with ListStore (Python) Marta Maria Casetti mmcasetti@gmail.com 2012 Un TreeView mostrando un ListStore (exemplo máis simple) Fran Dieguez frandieguez@gnome.org 2012-2013. TreeView Simple con ListStore

Este TreeView mostra un ListStore simple con un sinal de selección «changed» conectado.

Código usado para xerar este exemplo 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 o widget TreeView

The TreeView widget is designed around a Model/View/Controller design: the Model stores the data; the View gets change notifications and displays the content of the model; the Controller, finally, changes the state of the model and notifies the view of these changes. For more information, and for a list of useful methods for TreeModel, see .

In line 44 the "changed" signal is connected to the callback function on_changed() using widget.connect(signal, callback function). See for a more detailed explanation.

API References

Neste exemplo empregaremos o seguinte:

GtkTreeView

GtkTreeModel

GtkListStore

GtkCellRendererText

GtkTreeViewColumn

pygobject - Python bindings for GObject Introspection

Fonts