Working for you

it, 인터넷, 컴퓨터, 프로그램 정보 공유

파이썬 pyqt6 Qtreeview

GUI 프로그래밍에서 계층적 데이터를 표시해야 하는 경우, QTreeView는 매우 유용한 도구입니다. 파이썬 Pyqt6 QTreeView 위젯 사용시 윈도우 파일 탐색기에서 볼 수 있는 폴더 구조와 같은 계층적 데이터를 보여줄 때 사용됩니다.



1. 파이썬 Pyqt6 QTreeView 란?

QTreeView는 계층적 데이터를 시각적으로 보여주는 PyQt6 클래스입니다. PyQt6의 QTreeView는 데이터를 노드와 간선의 트리 구조로 표현합니다. 각각의 노드는 자식 노드를 가질 수 있으며, 이를 이용하여 데이터를 계층적으로 보여줍니다.

2. 파이썬 Pyqt6 QTreeView 만들기

QTreeView 만드는 방법은 간단합니다. 먼저, QTreeView 클래스를 이용하여 TreeView를 생성합니다. 그리고 데이터를 연결하기 위해 QStandardItemModel 클래스를 사용합니다. 이 클래스는 TreeView에 표시될 데이터를 담는 모델 역할을 합니다. 데이터를 모델에 추가할 때는 QStandardItem 클래스를 이용합니다.

다음과 같은 코드를 작성할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import sys
from PyQt6.QtWidgets import QApplication, QTreeView
from PyQt6.QtGui import QStandardItem, QStandardItemModel
 
app = QApplication(sys.argv)
tree_view = QTreeView()
model = QStandardItemModel()
root_node = model.invisibleRootItem()
 
parent1 = QStandardItem(‘Parent 1’)
parent1.appendRow([QStandardItem(‘Child 1-1’), QStandardItem(‘Child 1-2’)])
parent2 = QStandardItem(‘Parent 2’)
parent2.appendRow([QStandardItem(‘Child 2-1’), QStandardItem(‘Child 2-2’)])
root_node.appendRow([parent1, parent2])
 
tree_view.setModel(model)
tree_view.show()
sys.exit(app.exec())
 
cs

[실행화면]

파이썬 Pyqt6 QTreeView 1

PyQt6의 QTreeView, QStandardItemModel, QStandardItem 클래스를 사용하여 간단한 TreeView를 만드는 예제입니다. 코드를 실행하면, 위에서 작성한 예시 이미지와 같은 TreeView가 생성됩니다.

3. 파이썬 Pyqt6 QTreeView 사용 이유

QTreeView는 데이터의 계층 구조를 시각화하고 사용자의 작업을 단순화하는 데 사용됩니다. 또한, 데이터를 구성하고 계층적인 구조를 만들 수 있습니다. 사용자는 노드를 확장하거나 축소하여 데이터의 서브 섹션을 볼 수도 있습니다. 노드 클릭시 데이터를 수정하거나 삭제할 수 있습니다.

QTreeView는 마치 윈도우 탐색기와 같이 많은 종류의 데이터를 표시할 수 있습니다. 예를 들어, 트리 계층은 폴더와 파일 구조, 책의 챕터와 섹션, 제품 계층 구조, 조직도 등 다양한 데이터를 표시할 수 있습니다.

예시 코드를 살펴보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import sys
from PyQt6.QtWidgets import QApplication, QTreeView, QMainWindow
from PyQt6.QtGui import QFileSystemModel
 
app = QApplication(sys.argv)
 
window = QMainWindow()
window.setWindowTitle(“TreeView Example”)
 
tree_view = QTreeView(window)
tree_view.setGeometry(1010400300)
 
model = QFileSystemModel()
model.setRootPath(“”)
tree_view.setModel(model)
tree_view.setRootIndex(model.index(“”))
 
window.show()
sys.exit(app.exec())
 
cs

[실행화면]

파이썬 Pyqt6 QTreeView 2

QTreeView 위젯을 사용하여 파일 시스템 계층 구조를 표시합니다. QFileSystemModel은 트리 보기에서 데이터를 채우는 모델로 사용됩니다. 루트 경로를 빈 문자열로 설정하면 전체 파일 시스템이 표시됩니다. 루트 경로를 수정하여 특정 디렉터리를 표시하거나 요구 사항에 따라 트리 보기에 표시되는 데이터를 사용자 지정할 수 있습니다.

4. QTreeView 예제

PyQt6에서 TreeViews를 만드는 방법을 이해했다면, 간단한 예제를 통해 TreeViews를 더욱 자세히 살펴볼 수 있습니다.

다음 예제는 PyQt6를 이용하여 만든 TreeView를 통해 이해하기 쉬운 계층적 데이터를 보여줍니다. 중요한 점은, 이 예제에서도 위에서 작성한 예제와 같이 QTreeView, QStandardItemModel, QStandardItem 클래스를 사용한다는 것입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from PyQt6.QtGui import QStandardItemModel, QStandardItem
from PyQt6.QtWidgets import QApplication, QTreeView
 
def main():
    app = QApplication([])
    tree_view = QTreeView()
    model = QStandardItemModel()
    root_node = model.invisibleRootItem()
 
    # 1st level
    parent_1 = QStandardItem(‘Parent 1’)
    parent_1.appendRow([
        QStandardItem(‘Child 1-1’),
        QStandardItem(‘Child 1-2’),
        QStandardItem(‘Child 1-3’)
    ])
 
    # 2nd level
    parent_2 = QStandardItem(‘Parent 2’)
    parent_2.appendRow([
        QStandardItem(‘Child 2-1’),
        QStandardItem(‘Child 2-2’),
        QStandardItem(‘Child 2-3’)
    ])
 
    # 3rd level
    parent_3 = QStandardItem(‘Parent 3’)
    parent_3.appendRow([
        QStandardItem(‘Child 3-1’),
        QStandardItem(‘Child 3-2’),
        QStandardItem(‘Child 3-3’)
    ])
 
    root_node.appendRow([parent_1, parent_2, parent_3])
 
    tree_view.setModel(model)
    tree_view.show()
    app.exec()
 
if __name__ == ‘__main__’:
    main()
 
cs

[실행화면]

파이썬 Pyqt6 QTreeView 3

3단계의 계층적 데이터를 보여줍니다. 각각의 Parent 노드는 3개의 Child 노드를 가지며, Child 노드는 3단계 깊이까지 계층적으로 표현됩니다.

5. 결론 및 의견

파이썬 Pyqt6 QTreeView 사용 방법을 이해하면, GUI 프로그래밍에서 계층적 데이터를 표시하는 데 유용하게 사용할 수 있습니다.

[관련글]

PyQt6 위젯 정리

PyQt6 계산기 만들기

파이썬 GUI 라이브러리 – PYQT, TKINTER, KIVY

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다