Динамическое добавление элементов в QTreeWidget

Необходимо добавить элементы из массивов в QTreeWidget, учитывая возможность увеличения их количества. Элементы разделяются на подразделы и элементы в них. QTreeWidget разделяется на две columns.

Необходимо, что бы была возможность создавать подразделы и элементы в них не прибегая к изменениям в коде (к примеру, в зависимости от полученных из базы данных элементов).


введите сюда описание изображения

Так, по итогу, должен выглядет QTreeWidget.


import sys
from PyQt5.Qt import *
from PyQt5 import QtWidgets, QtCore


class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.treeW = QTreeWidget()
        self.treeW.setHeaderItem(QtWidgets.QTreeWidgetItem(['Номер', 'Задание']))

        # Номера подразделов
        _id = ['1', '2']

        # Названия подразделов
        _name = ['Свойства стека', 'Время выполненя и сложность']

        # Элементы этого массива должны находиться должны находиться в первом подразделе
        _tasks_one = ['Что такое стек?', 'В каком порядке можно забрать данные из стека?', 'Выберите пять основных функций при работе с стеком?']

        # А этого массива во втором
        _task_two = ['Что такое сложность O(n)?', 'Что такое сложность O(n^2)?', 'Как опередлить сложность O(n log n)?']

        topLevelItem = QtWidgets.QTreeWidgetItem(['', ''])
        topLevelItem.setFlags(topLevelItem.flags() | QtCore.Qt.ItemIsEditable)

        self.treeW.addTopLevelItem(topLevelItem)


        layout = QVBoxLayout(self)
        layout.addWidget(self.treeW)


if __name__ == '__main__':
    app = QApplication(sys.argv)

    w = MyWindow()
    w.resize(500, 300)
    w.setWindowTitle('My Window')
    w.show()
    sys.exit(app.exec())  

Ответы (0 шт):