Resumo : neste tutorial, você aprenderá como usar a QTreeWidget
classe PyQt para criar um widget de árvore que exibe dados hierárquicos.
Introdução à classe PyQt QTreeWidget
A QTreeWidget
classe permite criar um widget de visualização em árvore que consiste em itens. Os itens da árvore possuem relacionamentos pai/filho. A QTreeWidget
classe Item representa o item da árvore.
Para criar um widget de árvore, siga estas etapas:
Primeiro, crie um QTreeWidget
objeto:
tree = QTreeWidget(parent)
Linguagem de código: Python ( python )
O parent
argumento é 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 QTreeWidgetItem
objeto 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 QTreeWidgetItem
classe:
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
QTreeWidget
classe para criar um widget de árvore. - Use o
setColumnCount()
método daQTreeWidget
classe para definir as colunas da árvore. - Use o
setHeaderLabels()
método daQTreeWidget
classe para definir os cabeçalhos das colunas da árvore. - Use a
QTreeWidgetItem
classe para criar um item de widget de árvore. - Use o
addChild()
método deQTreeWidgetItem
para estabelecer o relacionamento pai/filho entre os itens.