PyGObject и Gtk.TreeStore / TreeView - как получить доступ к родительскому элементу? - PullRequest
0 голосов
/ 08 июня 2018

Я работаю с PyGObject и успешно настроил TreeStore и соответствующий TreeView.Это просто одноколоночное представление.Он перечисляет все учетные записи как родителей, а затем вы можете нажать на маленький треугольник, и он показывает папки.Код выглядит так:

    accounts_tree_store = Gtk.TreeStore(str)
    treeview_accounts = self.builder.get_object("treeview_accounts")
    treeview_accounts.set_model(accounts_tree_store)
    renderer = Gtk.CellRendererText()
    account_iter = accounts_tree_store.append(None, ["Account1"])
    accounts_tree_store.append(account_iter, ["Folder1"])
    accounts_tree_store.append(account_iter, ["Folder2"])
    accounts_tree_store.append(account_iter, ["Folder3"])
    accounts_tree_store.append(account_iter, ["Folder4"])
    accounts_tree_store.append(account_iter, ["Folder5"])

Затем я добавил это, чтобы получить выбор:

    selected_tree = treeview_accounts.get_selection()
    selected_tree.connect("changed", Handler().on_tree_select_change) 

И мой обработчик функций выглядит так:

    def on_tree_select_change(self, widget, *args):
    model, iter = widget.get_selected()            
    if iter:
    print((model[iter][0]))

Теперь все это работает просто отлично.Но я также хочу распечатать родительский элемент выбранного элемента.Что-то вроде: «Папка2 для Аккаунта4».Вопрос: как я могу получить доступ к родителю?Есть ли какая-то функция get_parent ()?Я не нашел ничего в документах.Кто-нибудь знает как это сделать?

Заранее спасибо !!

1 Ответ

0 голосов
/ 08 июня 2018

Эта функция называется iter_parent и возвращает родителя, если iter имеет его.Это метод model.

model, iter = widget.get_selected()            
parent = model.iter_parent (iter)
...