상세 컨텐츠

본문 제목

[PySide6] Table Widget을 사용하여 Data 출력하기

pyside6

by 빨간눈동자 2021. 9. 1. 00:42

본문

반응형

Table Widget을 사용하여 데이터를 표 형태로 출력해보자. 

import sys
from PySide6.QtGui import QColor
from PySide6.QtWidgets import (QApplication, QTableWidget,
                               QTableWidgetItem)       # 사용할 class를 import함
colors = [("Red", "#FF0000"),                          # 색상 정보를 tuple에 저장하고,
          ("Green", "#00FF00"),                        # tuple들을 list형태로 저장
          ("Blue", "#0000FF"),
          ("Black", "#000000"),
          ("White", "#FFFFFF"),
          ("Electric Green", "#41CD52"),
          ("Dark Blue", "#222840"),
          ("Yellow", "#F9E56d")]

def get_rgb_from_hex(code):                            # hex로 부터 rgb값을 구함
    code_hex = code.replace("#", "")
    rgb = tuple(int(code_hex[i:i+2], 16) for i in (0, 2, 4))
    return QColor.fromRgb(rgb[0], rgb[1], rgb[2])

if __name__ == '__main__':
    # Create the Qt Application
    app = QApplication()                               # QApplication class로부터 instance를 구함
    table = QTableWidget()                             # Table Widget instance 생성
    table.setRowCount(len(colors))                     # Table의 행을 설정, list의 길이
    table.setColumnCount(len(colors[0]) + 1)           # Table의 열을 설정, tuple의 길이+1
    table.setHorizontalHeaderLabels(["Name", "Hex Code", "Color"]) # 표의 index 문구 설정
    
    for i, (name, code) in enumerate(colors):          # list color의 정보를 for문으로 받아 온다. 
        item_name = QTableWidgetItem(name)             # QTableWidget에 사용될 Item(name)을 생성
        item_code = QTableWidgetItem(code)             # QTableWidget에 사용될 Item(code)을 생성
        item_color = QTableWidgetItem()
        item_color.setBackground(get_rgb_from_hex(code)) # item_color를 hex 값의 color로 배경색 설정
        table.setItem(i, 0, item_name)                 # name을 QTableWidget의 (i,0)에 할당
        table.setItem(i, 1, item_code)                 # code를 QTableWidget의 (i,1)에 할당
        table.setItem(i, 2, item_color)                # code로 생성된 배경색을 (i,2)에 할당
    
    table.show()                                       # table을 show 함
    sys.exit(app.exec())                               # Qt main loop를 시작함

 

enumerate는 index와 color의 요소를 함께 return 하게 된다. ( index는 0부터 시작 ) 

하지만, 표의 row는 1부터 표시되고 있다. 

    for i, (name, code) in enumerate(colors):
        print(f'{i} - {name} - {code}')

 

colors[0]은 ("Red", "#FF0000") 이며, 결국 len(colors[0]은 2를 나타낸다. 결론적으로 열이 3인 table인데.. 

color를 나타내기 위해 추가로 +1 한것을 알 수 있다.

    table.setColumnCount(len(colors[0]) + 1)

 

 

참고: https://doc.qt.io/qtforpython/tutorials/basictutorial/tablewidget.html

반응형

'pyside6' 카테고리의 다른 글

[PySide6] QMainWindow 사용하기  (0) 2021.09.01
[PySide6] 버튼 사용하기 #2  (0) 2021.09.01
[PySide6] Dialog Application 생성하기  (0) 2021.08.31
[PySide6] 버튼 사용하기 #1  (0) 2021.08.31
[PySide6] 설치 및 시작하기  (0) 2021.08.31

관련글 더보기