我可以向gtk中的现有treemodel添加列吗?

2024-06-10 04:29:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个从树模型填充的树视图。在

我想在树视图上加一根柱子。是否可以从单独的treemodel中提取该列的数据,或者可以在运行时将一列附加到现有的treemodel中?在


Tags: 数据模型视图treemodel柱子
3条回答

您可以根据需要向树状图追加任意数量的列,而不受模型列数的限制。如果模型中不存在所需的数据,可以为列设置回调:

import gtk


def inIta(col, cell, model, iter, mymodel):
    s = model.get_string_from_iter(iter)
    niter = mymodel.get_iter_from_string(s)
    obj = mymodel.get_value(niter, 0)
    cell.set_property('text', obj)


model = gtk.ListStore(str)
model2 = gtk.ListStore(str)
view = gtk.TreeView(model)
rend1 = gtk.CellRendererText()
col1 = gtk.TreeViewColumn('hello', rend1, text=0)
view.append_column(col1)
rend2 = gtk.CellRendererText()
col2 = gtk.TreeViewColumn('ciao', rend2)
col2.set_cell_data_func(rend2, inIta, model2)
view.append_column(col2)

model.append(['hello world'])
model2.append(['ciao mondo'])

win = gtk.Window()
win.connect('delete_event', gtk.main_quit)
win.add(view)
win.show_all()
gtk.main()

{{{cd1>方法中添加一个的方法。在

但是,我不知道有什么方法可以将新列添加到现有模型中,或者对同一个gtk.TreeView使用多个模型。无论如何,我想您可以创建一个新模型,添加一个额外的列,复制上一个的内容,并更新树视图以使用新模型。在

回答标题中的问题:不,您不能在GtkTreeModel创建之后向其添加列。在

相关问题 更多 >