반응형
PySide6에서 QTableWidget 헤더 및 테이블 스타일 설정하기
QTableWidget을 사용할 때 기본 스타일보다 더 세련되고 가독성 높은 UI를 만들기 위해서는 헤더 색상 변경 및 테이블 테두리 스타일 조정이 필요합니다. 이 글에서는 헤더 색상을 변경하는 방법과 테이블 라인의 색상 및 두께를 설정하는 방법을 예제 코드와 함께 설명하겠습니다.
1. QTableWidget 헤더 색상 변경하기
PySide6에서는 QHeaderView를 활용하여 테이블 헤더의 배경색 및 폰트 색상을 변경할 수 있습니다.
예제 코드: 헤더 색상 변경하기
from PySide6.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget
from PySide6.QtGui import QColor, QBrush, QFont
import sys
class StyledTableWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
layout = QVBoxLayout()
self.table = QTableWidget(3, 3) # 3행 3열 테이블 생성
self.table.setHorizontalHeaderLabels(["이름", "나이", "직업"])
# 헤더 배경색 및 글꼴 변경
header = self.table.horizontalHeader()
self.table.setStyleSheet(
"QHeaderView::section {"
"background-color: #0078D7; " # 파란색 헤더 배경
"color: white; " # 흰색 글씨
"font-weight: bold; "
"padding: 5px; "
"border: 1px solid #005a9e; "
"}"
)
# 테이블 데이터 추가
data = [["홍길동", "25", "개발자"],
["김철수", "30", "디자이너"],
["이영희", "28", "마케터"]]
for row, rowData in enumerate(data):
for col, value in enumerate(rowData):
item = QTableWidgetItem(value)
if row % 2 == 0:
item.setBackground(QColor(240, 240, 240)) # 행 색상 적용
self.table.setItem(row, col, item)
layout.addWidget(self.table)
self.setLayout(layout)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = StyledTableWidget()
window.show()
sys.exit(app.exec())
🛠️ 주요 기능 설명
- QHeaderView::section 스타일을 사용하여 헤더의 배경색과 폰트 스타일을 설정합니다.
- background-color: #0078D7; : 헤더의 배경을 파란색으로 변경
- color: white; : 글씨 색상을 흰색으로 설정
- border: 1px solid #005a9e; : 헤더의 테두리를 설정하여 더 선명하게 만듦
반응형
2. 테이블 라인 색상 및 두께 설정하기
테이블의 셀 테두리 스타일을 변경하려면 QTableWidget의 QTableView 스타일을 조정해야 합니다.
예제 코드: 테이블 라인 스타일 변경
from PySide6.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget
import sys
class TableWithBorders(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
layout = QVBoxLayout()
self.table = QTableWidget(3, 3)
self.table.setHorizontalHeaderLabels(["이름", "나이", "직업"])
# 테이블 스타일 적용 (라인 색상 및 두께 설정)
self.table.setStyleSheet(
"QTableWidget {"
"gridline-color: #005a9e; " # 테두리 색상 변경 (진한 파란색)
"border: 2px solid #0078D7; " # 테이블 외곽선 설정
"}"
"QTableWidget::item {"
"border: 1px solid #0078D7; " # 셀 내부의 개별 테두리 설정
"}"
)
# 테이블 데이터 추가
data = [["홍길동", "25", "개발자"],
["김철수", "30", "디자이너"],
["이영희", "28", "마케터"]]
for row, rowData in enumerate(data):
for col, value in enumerate(rowData):
self.table.setItem(row, col, QTableWidgetItem(value))
layout.addWidget(self.table)
self.setLayout(layout)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = TableWithBorders()
window.show()
sys.exit(app.exec())
🛠️ 주요 기능 설명
- gridline-color: #005a9e; : 셀 구분선을 파란색으로 설정
- border: 2px solid #0078D7; : 테이블의 전체 외곽선 스타일 지정
- QTableWidget::item { border: 1px solid #0078D7; } : 셀 내부 구분선 스타일 지정
반응형
'코딩취미 > Python' 카테고리의 다른 글
PySide6와 pprint: 순환 참조와 재귀 에러 문제 해결하기 (0) | 2025.03.22 |
---|---|
PySide6에서 QTableWidget UI 커스터마이징: 컬럼 숨기기, 셀 색상 변경, 팝업 기능 추가 (0) | 2025.03.21 |
PySide6으로 QTableWidget 다중 헤더 설정하는 방법 (0) | 2025.03.20 |
Python Matplotlib 완벽 가이드: 그래프 및 표 생성 방법 (0) | 2025.03.15 |
파이썬 Plotly로 그래프 만들기: (꺾은선, 막대, 산점도, 원형) (0) | 2025.03.14 |