Как вывести вложенный словарь в TreeView или TreeStore с помощью PyGTK - PullRequest
0 голосов
/ 09 января 2019

Ранее я создавал свой пользовательский интерфейс с Tkinter, но обнаружил, что у него есть серьезные проблемы при использовании Mac / Linux (работает правильно только в Windows) Поэтому я пытаюсь перейти на GTK. в моем пользовательском интерфейсе мне нужно вывести вложенный dict по умолчанию с древовидным представлением, похожим на этот (взят из моего пользовательского интерфейса Tkinter): https://cdn.pbrd.co/images/HVG3Zci.png

Я пытался создать рекурсивную функцию, которая разбивает объект до тех пор, пока не будет достигнут окончательный тип (str или tuple)

def build_tree(self,tree,object):
    for item in object.keys():
        if isinstance(object[item],tuple):
            next_tree = self.store.append(tree, [item])
            continue
        if isinstance(object[item],list):
            next_tree = self.store.append(tree, [item])
            self.build_tree(next_tree, dict([(i, x) for i, x in enumerate(object[item])]))

        if not isinstance(object[item],str):
            next_tree = self.store.append(tree, [item])
            self.build_tree(next_tree,object[item])

безуспешно, невозможно правильно пройти весь объект

Кроме того, я передаю объекту диктовку, называемую «заголовки», для определения столбцов дерева, но просто не могу найти пример синтаксиса для динамической установки столбцов дерева, только жестко закодированные

обнаружил, что очень трудно найти примеры для анализа вложенных диктов в древовидном представлении, особенно с помощью информационных столбцов (найден пример дерева системных файлов, но без столбцов)

...