상세 컨텐츠

본문 제목

[PySide6] Tree Widget을 사용하여 data 출력

pyside6

by 빨간눈동자 2021. 9. 1. 22:59

본문

반응형

아래 예제를 Line by Line으로 살펴보자 

import sys
from PySide6.QtWidgets import QApplication, QTreeWidget, QTreeWidgetItem  # 필요한 class import함

data = {"Project A": ["file_a.py", "file_a.txt", "something.xls"],        # 딕셔너리(Dic) 형태로 자료를 저장함
        "Project B": ["file_b.csv", "photo.jpg"],
        "Project C": []}
        
app = QApplication()                                   # QApplicatoin class의 instance를 생성
tree = QTreeWidget()                                   # QTreeWidget의 instance 생성
tree.setColumnCount(2)                                 # QTreeWidget의 column을 2로 설정
tree.setHeaderLabels(["Name", "Type"])                 # column의 label을 설정함

items = []
for key, values in data.items():                       # 딕셔너리(Dic)에서 key와 value의 값을 얻어옴
    item = QTreeWidgetItem([key])                      # "Name" column에 key값을 할당한 item 생성
    for value in values:
        ext = value.split(".")[-1].upper()             # values 각각의 요소의 확장자를 구함
        child = QTreeWidgetItem([value, ext])          # "Name" column 에 value 값을, "Type" column에 ext 값을 할당한 child 생성
        item.addChild(child)                           # child를 item의 child로 추가한다. 
        items.append(item)                             # key를 items list에 추가한다. 

tree.insertTopLevelItems(0, items)                     # index 0에 items을 추가한다. 
//tree.addTopLevelItems(items)                         # 위 code와 동일한 의미

tree.show()
sys.exit(app.exec())

 

item = QTreeWidgetItem([key])   # "Project A", "Project B", "Project C"

위 code는 인자로 전달된 [key]를 첫번째 column인 "Name"에 할당한 item을 생성하고, 

아래 code는 인자로 전달된 [value, ext] 중 첫번째 값인 value를 "Name" column에 할당하고 두번째 인자인 ext를 "Type" column에 할당한다. 

child = QTreeWidgetItem([value, ext])   # ["file_a.py", "PY"]

 

결과는 아래와 같다.. 

 

tree.insertTopLevelItems(0, items)                     # index 0에 items을 추가한다. 
//tree.addTopLevelItems(items)                         # 위 code와 동일한 의미

Items list (부모 : "Project A", "Project B", ...) 를 QTreeWidget의 TopLevel에 추가하는 코드(???) 인거 같은데..

정확히는 잘 모르겠다.. 

반응형

관련글 더보기