Создайте иерархическую структуру для dict of dict в pyqt5 [закрыто] ⇐ Python
Создайте иерархическую структуру для dict of dict в pyqt5 [закрыто]
Предположим, у меня есть словарь
данные = { "Корень": { «Детский1»: «Значение1», «Детский2»: «Значение3» } } В pyqt5 мне нужно создать древовидное представление со строками, соединяющими корень и дочерний элемент, как показано ниже.
Ожидаемый результат:
Корень |___Ребенок1 | |___Значение1 |___Ребенок2 |___Значение2 До сих пор я пытался использовать QTreeView, который создает иерархию, но не мог рисовать линии на уровнях иерархии.
импортировать систему из PyQt5.QtWidgets импортируйте QApplication, QMainWindow, QTreeWidget, QTreeWidgetItem класс TreeViewExample(QMainWindow): защита __init__(сам): супер().__init__() self.initUI() Защиту initUI (сам): self.setWindowTitle("Пример древовидного представления") self.setGeometry(100, 100, 800, 600) self.tree_view = QTreeWidget(сам) self.tree_view.setGeometry(10, 10, 780, 580) self.tree_view.setHeaderHidden(True) # Данные для древовидного представления (словарь) данные = { "Корень": { «Детский1»: «Значение1», «Детский2»: «Значение2» } } self.populate_tree(данные, self.tree_view) Защиту populate_tree (я, данные, родительский_элемент): для ключа значение в data.items(): если isinstance(значение, dict): item = QTreeWidgetItem(parent_item, [ключ]) self.populate_tree(значение, элемент) item.setExpanded(True) # Сохранять родительский элемент развернутым еще: item = QTreeWidgetItem(parent_item, [f"{key}: {value}"]) защита основной(): приложение = QApplication(sys.argv) окно = TreeViewExample() окно.шоу() sys.exit(app.exec_()) если __name__ == '__main__': основной()
Предположим, у меня есть словарь
данные = { "Корень": { «Детский1»: «Значение1», «Детский2»: «Значение3» } } В pyqt5 мне нужно создать древовидное представление со строками, соединяющими корень и дочерний элемент, как показано ниже.
Ожидаемый результат:
Корень |___Ребенок1 | |___Значение1 |___Ребенок2 |___Значение2 До сих пор я пытался использовать QTreeView, который создает иерархию, но не мог рисовать линии на уровнях иерархии.
импортировать систему из PyQt5.QtWidgets импортируйте QApplication, QMainWindow, QTreeWidget, QTreeWidgetItem класс TreeViewExample(QMainWindow): защита __init__(сам): супер().__init__() self.initUI() Защиту initUI (сам): self.setWindowTitle("Пример древовидного представления") self.setGeometry(100, 100, 800, 600) self.tree_view = QTreeWidget(сам) self.tree_view.setGeometry(10, 10, 780, 580) self.tree_view.setHeaderHidden(True) # Данные для древовидного представления (словарь) данные = { "Корень": { «Детский1»: «Значение1», «Детский2»: «Значение2» } } self.populate_tree(данные, self.tree_view) Защиту populate_tree (я, данные, родительский_элемент): для ключа значение в data.items(): если isinstance(значение, dict): item = QTreeWidgetItem(parent_item, [ключ]) self.populate_tree(значение, элемент) item.setExpanded(True) # Сохранять родительский элемент развернутым еще: item = QTreeWidgetItem(parent_item, [f"{key}: {value}"]) защита основной(): приложение = QApplication(sys.argv) окно = TreeViewExample() окно.шоу() sys.exit(app.exec_()) если __name__ == '__main__': основной()
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение