您需要做两件事:
ListStore用单个
TYPE_PYOBJECT列设置a
,然后
set_cell_data_func在树视图列上使用a来从适当的对象属性中设置单元格文本。
这是一个演示此的示例:
from gi.repository import Gtk, GObjectclass MyClass(object): def __init__(self, first, last, age): self.first = first self.last = last self.age = agetree_store = Gtk.ListStore(GObject.TYPE_PYOBJECT)tree_store.append([MyClass("foo", "bar", 15)])tree_store.append([MyClass("baz", "qux", 100)])def make_column(caption, getter): rend = Gtk.CellRendererText() col = Gtk.TreeViewColumn(caption, rend) def _set_cell_text(column, cell, model, it, ignored): obj = model.get_value(it, 0) cell.set_property('text', getter(obj)) col.set_cell_data_func(rend, _set_cell_text) return colview = Gtk.TreeView(tree_store)view.append_column(make_column("First", lambda obj: obj.first))view.append_column(make_column("Last", lambda obj: obj.last))view.append_column(make_column("Age", lambda obj: '%d' % obj.age))w = Gtk.Window()w.add(view)w.show_all()Gtk.main()


