Найти тему
programmer's notes (python and more)

Программироание на языке python. Библиотека PyQt5. Дерево. Объекты QTreeWidget, QTreeWidgetItem

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

Создание древовидной структы с помощью классов QTreeWidget, QTreeWidgetItem

Наконец дошли до QTreeWidget. Класс этот позволяет создавать визуальный объект древовидного типа. Ну, скажем, представить файловую систему. Класс QTreeWidget работает в паре с классом QTreeWidgetItem. Можно сказать, что объект последнего класса это строка. Дерево имеет не только строки, но столбцы. Каждый элемент дерева может иметь вложенные элементы.

Ниже представлена простая программа, в которой показаны элементарные приёмы при создании дерева. Есть, конечно, и другие вопросы: как программно просматривать дерево, как его редактировать. Ну, этим займёмся в одной из следующих статей. Работу программы см. на рисунке 1. Что я хотел представить в данном статье:

  • Добавление корневых элементов.
  • Добавление обычных элементов к родительскому элементу.
  • Окрашивание отдельных полей.
  • Добавление пиктограмм.
Скриншот программы с QTreeWidget. Текст программы см. п ссылке ниже
Скриншот программы с QTreeWidget. Текст программы см. п ссылке ниже
primer257.py

Пояснение к программе.

  • Создание дерева, как и следовало ожидать осуществляется вызовом QTreeWidget(). В качестве аргумента указывается объект QWidget - окно.
  • Задать количество столбцов можно setColumnCount(). Впрочем определяющим является метод setHeaderLabels(), который устанавливает имена столбцов.
  • Добавить корневые элементы дерева можно двумя способами. Первый - метод addTopLevelItem(). Можно также при создании элемента QTreeWidgetItem() первым аргументом указать дерево. В нашем случае это объект self.tree.
  • При создании элемента с помощью QTreeWidgetItem() первым аргументом указываем родительский элемент. В сущности вот и весь алгоритм формирования дерева.
  • Для окрашивания строки (элемента) дерева в начале создаём объект QColor. Затем используем метод QTreeWidgetItem.setBackground() для соответствующего элемента. При этом первый аргумента это номер столбца, а вторым аргументом стоит объект QColor.
  • Для каждого поля строки можно добавить пиктограмму. Для этого создаём объекты QIcon указывая файлы. А затем используем метод QTreeWidgetItem.setIcon(), первым аргументом которого указывается номер столбца, а вторым пиктограмма.

Результат смотрим на рисунке 1.

Обращу также внимание на то, что я масштабирую элемент QTreeWidget. См. обработку события resizeEvent().

Рисунок 1. QTreeWidget с элементами QTreeWidgetIten
Рисунок 1. QTreeWidget с элементами QTreeWidgetIten

Замечание
Вы заметили, что рассматриваемый нами объект
QTreeWidget в сущности является расширением списка?

Ну, пока всё!

Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.

Одно дерево вы должны обязательно посадить
Одно дерево вы должны обязательно посадить