Могу ли я добавить столбец к существующей модели дерева в gtk?
У меня есть древовидная структура, которая заполняется из древовидной модели.
Я хотел бы добавить столбец в дерево. Можно ли извлечь данные для этого столбца из отдельной древовидной модели или я могу добавить во время выполнения столбец к существующей древовидной модели?
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()
В gtk.TreeView
возражать append_column
метод, так что да, вы можете программно добавить столбец в gtk.TreeView
,
Однако я не знаю ни одного метода добавления нового столбца в существующую модель или использования нескольких моделей для одной и той же модели. gtk.TreeView
, В любом случае, я думаю, что вы можете создать новую модель с дополнительным столбцом, скопировать содержимое предыдущего и обновить древовидное представление для использования новой модели.
Чтобы ответить на вопрос в заголовке: Нет, вы не можете добавить столбцы в GtkTreeModel после того, как он был создан.