PyQt QTreeWidget

Resumo : neste tutorial, você aprenderá como usar a QTreeWidgetclasse PyQt para criar um widget de árvore que exibe dados hierárquicos.

Introdução à classe PyQt QTreeWidget

A QTreeWidgetclasse permite criar um widget de visualização em árvore que consiste em itens. Os itens da árvore possuem relacionamentos pai/filho. A QTreeWidgetclasse Item representa o item da árvore.

Para criar um widget de árvore, siga estas etapas:

Primeiro, crie um QTreeWidgetobjeto:

tree = QTreeWidget(parent)Linguagem de código:  Python  ( python )

O parentargumento é o widget pai ou a janela principal .

Segundo, defina o número de colunas da árvore usando o setColumnCount()método:

tree.setColumnCount(column_count)Linguagem de código:  Python  ( python )

Terceiro, defina os rótulos de cabeçalho para as colunas do widget de árvore usando o setHeaderLabels()método:

tree.setHeaderLabels(headers)Linguagem de código:  Python  ( python )

Quarto, crie um novo QTreeWidgetItemobjeto e defina o texto do item:

item = QTreeWidgetItem(tree)
item.setText(column_index, item_text)Linguagem de código:  Python  ( python )

O primeiro argumento do setText()método é o índice da coluna começando em zero e o segundo argumento é o texto do item.

Opcionalmente, você pode definir o ícone do item da árvore:

item.setIcon(column_index, QIcon(icon_path))Linguagem de código:  Python  ( python )

Para adicionar um item como filho de outro item, você usa o addChild()método da QTreeWidgetItemclasse:

item.addChild(child_item)Linguagem de código:  Python  ( python )

Exemplo PyQt QTreeWidget

Desenvolveremos um programa simples que exibe os departamentos e funcionários dos departamentos usando o arquivo QTreeWidget.

Aqui está o programa:

import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QTreeWidget, QTreeWidgetItem
from PyQt6.QtCore import Qt,QSize
from PyQt6.QtGui import QIcon, QAction


class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.setWindowTitle('PyQt QTreeWidget')
        self.setGeometry(100, 100, 400, 200)

        # tree
        tree = QTreeWidget(self)
        tree.setColumnCount(2)
        tree.setHeaderLabels(['Departments', 'Employees'])

        departments = ['Sales','Marketing','HR']
        employees = {
            'Sales': ['John','Jane','Peter'],
            'Marketing': ['Alice','Bob'],
            'HR': ['David'],
        }

        # addition data to the tree
        for department in departments:
            department_item = QTreeWidgetItem(tree)
            department_item.setText(0,department)
            # set the child
            for employee in employees[department]:
                employee_item   = QTreeWidgetItem(tree)
                employee_item.setText(1,employee)

                department_item.addChild(employee_item)

        # place the tree on the main window
        self.setCentralWidget(tree)

    

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())Linguagem de código:  Python  ( python )

Como funciona.

Primeiro, crie um novo QTreeWidget, configure sua conta de coluna e defina os rótulos do cabeçalho:

 tree = QTreeWidget(self)
 tree.setColumnCount(2)
 tree.setHeaderLabels(['Departments', 'Employees'])Linguagem de código:  Python  ( python )

Segundo, prepare os dados para exibição no widget de árvore:

departments = ['Sales','Marketing','HR']
employees = {
    'Sales': ['John','Jane','Peter'],
    'Marketing': ['Alice','Bob'],
    'HR': ['David'],
}Linguagem de código:  Python  ( python )

Terceiro, adicione os departamentos à primeira coluna da árvore. Para cada departamento, adicione os funcionários na segunda coluna e como itens filhos do departamento:

for department in departments:
    department_item = QTreeWidgetItem(tree)
    department_item.setText(0,department)
    # set the children
    for employee in employees[department]:
        employee_item   = QTreeWidgetItem(tree)
        employee_item.setText(1,employee)
        department_item.addChild(employee_item)Linguagem de código:  Python  ( python )

Por fim, coloque o widget de árvore como widget central da janela principal:

self.setCentralWidget(tree)Linguagem de código:  Python  ( python )

Resumo

  • Use a QTreeWidgetclasse para criar um widget de árvore.
  • Use o setColumnCount()método da QTreeWidgetclasse para definir as colunas da árvore.
  • Use o setHeaderLabels()método da QTreeWidgetclasse para definir os cabeçalhos das colunas da árvore.
  • Use a QTreeWidgetItemclasse para criar um item de widget de árvore.
  • Use o addChild()método de QTreeWidgetItempara estabelecer o relacionamento pai/filho entre os itens.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *