본문 바로가기
코딩취미/Python

PySide6에서 QTableWidget 헤더 및 테이블 스타일 설정하기

by 브링블링 2025. 3. 20.
반응형

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. 테이블 라인 색상 및 두께 설정하기

테이블의 셀 테두리 스타일을 변경하려면 QTableWidgetQTableView 스타일을 조정해야 합니다.

예제 코드: 테이블 라인 스타일 변경

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; } : 셀 내부 구분선 스타일 지정
반응형