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] 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 |