PyQt5에서 QTableWidget를 마우스로 클릭하여 선택되는 것 방지Qt/PyQt5 강좌2024. 8. 29. 22:28
Table of Contents
반응형
PyQt5에서 QTableWidget를 마우스로 클릭하여 선택되는 것 방지를 하는 예제입니다.
2024. 8. 29 최초작성
실행결과 표를 클릭해도 선택이 되지 않습니다.
전체 코드입니다. 표 선택을 방지하기 위해 QTableWidget 대신에 QTableWidget를 상속받은 NoSelectionTable를 사용합니다.
import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QHeaderView from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem, QAbstractItemView from PyQt5.QtCore import Qt from PyQt5.QtGui import QColor # 표 선택을 방지합니다. class NoSelectionTable(QTableWidget): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setSelectionMode(QAbstractItemView.NoSelection) self.setFocusPolicy(Qt.NoFocus) self.setEditTriggers(QAbstractItemView.NoEditTriggers) class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("학생 성적표") self.table = NoSelectionTable(5, 4) # 5행 4열의 테이블 생성 self.setCentralWidget(self.table) # 열 제목 설정 headers = ["학생 이름", "국어", "영어", "수학"] self.table.setHorizontalHeaderLabels(headers) # 헤더 스타일 설정 header = self.table.horizontalHeader() header.setStyleSheet("QHeaderView::section { background-color: #2C3E50; color: white; }") # 테이블에 데이터 추가 data = [ ("김철수", 85, 92, 78), ("이영희", 92, 88, 95), ("박민수", 78, 85, 90), ("정수진", 95, 91, 88), ("장미란", 88, 79, 93) ] for row, (name, kor, eng, math) in enumerate(data): self.table.setItem(row, 0, QTableWidgetItem(name)) self.table.setItem(row, 1, QTableWidgetItem(str(kor))) self.table.setItem(row, 2, QTableWidgetItem(str(eng))) self.table.setItem(row, 3, QTableWidgetItem(str(math))) # 열 너비 자동 조정 self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) # 테이블 크기에 맞춰 윈도우 크기 조정 self.table.resizeColumnsToContents() self.table.resizeRowsToContents() self.adjustSize() if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) |
반응형
'Qt > PyQt5 강좌' 카테고리의 다른 글
프로그레스 바(QProgressBar)를 제어하는 간단한 PyQt5 예제 (0) | 2024.08.31 |
---|---|
PyQt5 그룹박스(QGroupBox) 예제 (0) | 2024.08.31 |
탭 재생성 시 이전 선택 탭 복원하는 pyQt5 예제 (2) | 2024.08.23 |
pyQt5로 만든 이미지 뷰어 (0) | 2024.08.21 |
pyQt5 윈도우를 화면의 중앙에 배치하기 (0) | 2024.08.19 |