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

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

Однако Gtk отказывается сотрудничать со мной. Я попробовал оба с 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's .append также принимает GtkTreeIter, но если я передам что-то вроде "0" в качестве первого аргумента, ничего не изменится, если я передам что-то вроде self.treestore.get_iter("0") он ошибается, говоря, что это неверный путь к дереву, и если я передам None это работает, но показывает пустое окно.

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

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

2 ответа

Решение

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

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

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

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