트리 위젯(QTreeWidget)은 말 그대로 나무의 가지처럼 하위에 0개 이상의 자식을 가지는 구조를 말합니다. 컴퓨터에서 흔히 볼 수 있는 곳이 탐색기의 폴더 구조입니다. 이것을 PyQt5 에서는 QTreeWidget 으로 구현합니다. 기본 열(Column) 의 개수는 1개이며, setColumnCount(column)로 지정할 수 있다.
1. 기본 위젯 구현하기
▼ 트리 위젯인 QTreeWidget 객체를 생성합니다. 다음은 QTreeWidget 내부에 들어갈 데이터를 추가합니다. QTreeWidgetItem() 객체를 생성하는데, 생성자의 인수값으로 QTreeWidget 의 객체를 입력합니다. 아래 샘플은 “A1”, “B1” 텍스트 데이터를 추가하는 내용입니다.
from PyQt5.QtWidgets import QTreeWidget, QTreeWidgetItem
# QTreeView 추가
self.root_tree = QTreeWidget()
item1 = QTreeWidgetItem(self.root_tree)
item1.setText(0, "A1")
item2 = QTreeWidgetItem(self.root_tree)
item2.setText(0, "B1")
▼ QMainWindow 클래스를 상속받아 만든 화면에서는 QTreeWidget 을 화면에 추가하기 위해 setCentralWidget() 함수를 사용했습니다.
# 화면 전체에 추가
self.setCentralWidget(self.root_tree)
2. 트리 형태로 단계를 낮춰서 데이터 추가하기
▼ 하위에 데이터를 추가하는 방법은 간단합니다. 하위에 추가하고 싶은 상위 트리 항목의 QTreeWidgetItem 객체를 생성자로 인수로 추가하는 것입니다. 제일 상위에 있는 item1 을 QTreeWidgetItem(item1) 의 인수로 넘기면서 객체를 생성합니다.
# QTreeView 추가
self.root_tree = QTreeWidget()
item1 = QTreeWidgetItem(self.root_tree)
item1.setText(0, "A1")
item2 = QTreeWidgetItem(self.root_tree)
item2.setText(0, "B1")
sub_item1 = QTreeWidgetItem(item1)
sub_item1.setText(0, "A11")
sub_item2 = QTreeWidgetItem(sub_item1)
sub_item2.setText(0, "A111")
3. item 원하는 위치에 추가하기
▼ QTreeWidget 에 QTreeWidgetItem 객체를 만들어서 추가하는 또 다른 방법은 insertTopLevelItem() 함수를 이용하는 것입니다. 첫 번째 파라미터로 행 위치를 입력합니다. 0 은 최상위를 의미합니다. 1 은 A1 다음으로 추가가 됩니다.
# 제일 상위 트리에 추가하기
item3 = QTreeWidgetItem()
item3.setText(0, "C1")
self.root_tree.insertTopLevelItem(0, item3)
4. 제목 영역 수정하기
▼ 열의 제목을 수정하는 간단한 방법은 setHeaderLabels() 함수를 이용해서 수정하는 것입니다. 배열의 순서가 열 번호입니다. 기본 1, 2 ... 의 값을 “Header1”, “Header2” 로 변경합니다. 제목영역을 보여주고 싶지 않다면 setVisible() 함수를 이용해서 False 값으로 변경합니다.
self.root_tree = QTreeWidget()
self.root_tree.setHeaderLabels(["Header1", "Header2"])
self.root_tree.header().setVisible(True)
self.root_tree.setAlternatingRowColors(True)
▼ 또 다른 방법으로 QTreeWidget 의 setHeaderItem() 함수를 이용합니다. QTreeWidgetItem 객체를 생성해서 추가합니다.
head_item = QTreeWidgetItem()
head_item.setText(0, "Header1")
head_item.setText(1, "Header2")
self.root_tree = QTreeWidget()
self.root_tree.setHeaderItem(head_item)
▼ 결과 화면은 다음과 같습니다.
'파이썬 > PyQt5' 카테고리의 다른 글
파이썬(Python) PyQt5 QTreeView 위젯 이용해서 윈도우 파일 (0) | 2021.11.26 |
---|---|
파이썬(Python) PyQt5 QCalendarWidget 위젯 달력 사용하기 (0) | 2021.11.25 |
파이썬(Python) PyQt5 QTooltip 툴팁 표시하기 (0) | 2021.11.23 |
파이썬(Python) PyQt5 QTabWidget 메인화면 탭 구현하기 (0) | 2021.11.22 |
파이썬(PyQt5) QSplitter 위젯 이용해서 조절 가능한 영역 만들기 (0) | 2021.11.20 |