Могу ли я добавить столбец к существующей модели дерева в gtk? - PullRequest
4 голосов
/ 19 января 2012

У меня есть древовидная структура, которая заполняется из древовидной модели.

Я хотел бы добавить столбец в древовидную структуру.Можно ли извлечь данные для этого столбца из отдельной древовидной модели или я могу добавить во время выполнения столбец к существующей древовидной модели?

Ответы [ 3 ]

3 голосов
/ 19 января 2012

Вы можете добавить столько столбцов к древовидному представлению, сколько вам нужно, без ограничения количества столбцов модели.Если необходимые данные отсутствуют в модели, вы можете установить обратный вызов для столбца:

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()
0 голосов
/ 27 августа 2015

Чтобы ответить на вопрос в заголовке: Нет, вы не можете добавить столбцы в GtkTreeModel после того, как он был создан.

0 голосов
/ 19 января 2012

В объекте gtk.TreeView есть метод append_column, так что да, вы можете программно добавить столбец к gtk.TreeView.

Однако я не знаю ни одного метода добавления нового столбца к существующей модели или использования нескольких моделей для одного и того же gtk.TreeView. В любом случае, я думаю, вы можете создать новую модель с дополнительным столбцом, скопировать содержимое предыдущего и обновить древовидное представление для использования новой модели.

...