Попытка создать GtkTreeView из Python, похоже, не работает

Я пишу приложение, используя Gtk / PyGI, и мне нужно создать боковую панель с деревом, похожим на Наутилус .

1112 Однако Гтк отказывается сотрудничать со мной. Я попробовал как с Glade, так и с GtkBuilder (создавая GtkTreeStore с одним столбцом gchararray) и с этим кодом:

def create_widgets(self):
  self.hbox = Gtk.Box(orientation = Gtk.Orientation.HORIZONTAL)
  self.add(self.hbox)
  self.treestore = Gtk.TreeStore(str)
  self.treeview = Gtk.TreeView(self.treestore)
  self.treestore.append(["Item 1"])
  self.treestore.append(["Item 2"])
  self.hbox.pack_start(self.treeview, True, True, 0)

Обе версии вызывают TypeError: Expected Gtk.TreeIter, but got StructMeta, начиная с первой self.treestore.append() в моем коде, и просачивался сквозь файлы библиотеки.

Я подумал, что это потому, что GtkTreeStore .append также принимает GtkTreeIter, но если я передаю что-то вроде «0» в качестве первого аргумента, ничего не меняется, если я передаю что-то вроде self.treestore.get_iter("0"), он выдает ошибку, говоря, что это неверный путь к дереву, и если я прохожу None, это работает, но показывает пустое окно .

Я попытался заменить GtkTreeStore на GtkListStore. Результат не выдает ошибку - вместо этого он показывает то же самое пустое окно, что и раньше .

1116 Итак, что я делаю не так? Я снова и снова просматривал документы , но до сих пор не могу понять.

3
задан 25 June 2012 в 13:29

2 ответа

A Gtk.TreeStore и Gtk.ListStore отличаются тем, что Gtk.ListStore представляет собой плоский список, в который вы добавляете строки в виде списка, тогда как Gtk.TreeStore содержит родительские / дочерние данные, поэтому он принимает родителя как Gtk.TreeIter. ] и список в виде строки.

parent_iter = treestore.append(None, ["parent row"])
treestore.append(parent_iter, ["child row"])

http://python-gtk-3-tutorial.readthedocs.org/en/latest/treeview.html#Gtk.TreeStore.append

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

0
ответ дан 25 June 2012 в 13:29

Я столкнулся с этой демонстрацией, в которой используется TreeStore: http://git.gnome.org/browse/pygobject/tree/demos/gtk-demo/gtk-demo.py

0
ответ дан 25 June 2012 в 13:29

Другие вопросы по тегам:

Похожие вопросы: