我可以向 gtk 中的现有树模型添加一列吗?

发布于 2024-12-27 19:15:46 字数 85 浏览 2 评论 0原文

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

我想向树视图添加一列。是否可以从单独的树模型中绘制该列的数据,或者我可以在运行时将列附加到现有的树模型中吗?

I have a treeview that is populated from a treemodel.

I would like to add a colum to the treeview. Is it possible to draw the data for that column from a separate treemodel or can I append at runtime a column to the existing treemodel?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

懒的傷心 2025-01-03 19:15:46

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

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()

You can append as many columns to the tree view as you need, without the limit of the columns of the model. If the data you need are not present in the model, you can set a callback for a column:

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()
梦里寻她 2025-01-03 19:15:46

gtk.TreeView 对象中,有一个 append_column 方法,因此,您可以通过编程方式向 gtk.TreeView 添加列。

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

In a gtk.TreeView object there's an append_column method, so yes, you can programmatically add a column to a gtk.TreeView.

However, I'm not aware of any method for adding a new column to an existing model or using multiple models for the same gtk.TreeView. Anyway, I guess you can create a new model with an extra column, copy the contents of the previous one and update the tree view to use the new model.

杀手六號 2025-01-03 19:15:46

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

To answer the question in the title: No, you can't add columns to a GtkTreeModel after it's been created.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文