반응형
PySide6에서 QTableWidget UI 커스터마이징: 컬럼 숨기기, 셀 색상 변경, 팝업 기능 추가
QTableWidget을 사용할 때 더욱 직관적인 UI를 만들기 위해 컬럼 숫자 숨기기, 셀의 배경 및 글자 색상 변경, 그리고 클릭 시 팝업 창 표시 등의 기능을 추가할 수 있습니다. 이 글에서는 해당 기능들을 구현하는 방법을 예제 코드와 함께 설명하겠습니다.
1. QTableWidget에서 컬럼 숫자(인덱스) 숨기기
QTableWidget의 왼쪽에 기본적으로 표시되는 **행 번호(인덱스)**를 숨기는 방법은 verticalHeader().setVisible(False) 메서드를 사용하면 됩니다.
예제 코드: 컬럼 숫자 숨기기
from PySide6.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget
import sys
class HideColumnNumbers(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
layout = QVBoxLayout()
self.table = QTableWidget(3, 3)
self.table.setHorizontalHeaderLabels(["이름", "나이", "직업"])
# 컬럼 숫자 숨기기
self.table.verticalHeader().setVisible(False)
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 = HideColumnNumbers()
window.show()
sys.exit(app.exec())
✅ 기능 요약: self.table.verticalHeader().setVisible(False)를 추가하면 컬럼 인덱스를 숨길 수 있습니다.
2. 특정 셀의 배경색 및 글자색 변경하기
셀의 배경색 및 글자색을 변경하려면 setBackground(QColor())와 setForeground(QColor())를 활용합니다.
예제 코드: 셀 배경색 및 글자색 변경하기
from PySide6.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget
from PySide6.QtGui import QColor
import sys
class CellColorChange(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
layout = QVBoxLayout()
self.table = QTableWidget(3, 3)
self.table.setHorizontalHeaderLabels(["이름", "나이", "직업"])
data = [["홍길동", "25", "개발자"],
["김철수", "30", "디자이너"],
["이영희", "28", "마케터"]]
for row, rowData in enumerate(data):
for col, value in enumerate(rowData):
item = QTableWidgetItem(value)
if col == 1: # 나이 열의 색상을 변경
item.setBackground(QColor(255, 223, 186)) # 연한 오렌지 배경색
item.setForeground(QColor(255, 0, 0)) # 빨간 글자색
self.table.setItem(row, col, item)
layout.addWidget(self.table)
self.setLayout(layout)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = CellColorChange()
window.show()
sys.exit(app.exec())
✅ 기능 요약: 특정 열이나 행의 색상을 지정할 수 있으며, setBackground(QColor())를 활용하면 배경색을, setForeground(QColor())를 사용하면 글자색을 변경할 수 있습니다.
반응형
3. 셀이 클릭되었을 때 팝업 창 띄우기
셀을 클릭했을 때 팝업 창을 띄우려면 cellClicked 시그널을 사용하여 QMessageBox를 띄우면 됩니다.
예제 코드: 셀 클릭 시 팝업 표시
from PySide6.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget, QMessageBox
import sys
class TableWithPopup(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
layout = QVBoxLayout()
self.table = QTableWidget(3, 3)
self.table.setHorizontalHeaderLabels(["이름", "나이", "직업"])
data = [["홍길동", "25", "개발자"],
["김철수", "30", "디자이너"],
["이영희", "28", "마케터"]]
for row, rowData in enumerate(data):
for col, value in enumerate(rowData):
self.table.setItem(row, col, QTableWidgetItem(value))
# 셀 클릭 이벤트 연결
self.table.cellClicked.connect(self.show_popup)
layout.addWidget(self.table)
self.setLayout(layout)
def show_popup(self, row, col):
item = self.table.item(row, col)
if item:
QMessageBox.information(self, "셀 클릭", f"선택한 값: {item.text()}")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = TableWithPopup()
window.show()
sys.exit(app.exec())
✅ 기능 요약:
- self.table.cellClicked.connect(self.show_popup)을 통해 셀 클릭 이벤트를 감지합니다.
- QMessageBox.information()을 사용하여 셀에 입력된 값을 팝업 창으로 표시합니다.
반응형
'코딩취미 > Python' 카테고리의 다른 글
PySide6와 pprint: 순환 참조와 재귀 에러 문제 해결하기 (0) | 2025.03.22 |
---|---|
PySide6에서 QTableWidget 헤더 및 테이블 스타일 설정하기 (0) | 2025.03.20 |
PySide6으로 QTableWidget 다중 헤더 설정하는 방법 (0) | 2025.03.20 |
Python Matplotlib 완벽 가이드: 그래프 및 표 생성 방법 (0) | 2025.03.15 |
파이썬 Plotly로 그래프 만들기: (꺾은선, 막대, 산점도, 원형) (0) | 2025.03.14 |