728x90
반응형
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QCalendarWidget, QLabel, QVBoxLayout, QWidget
from PyQt5.QtCore import QDate, Qt
from PyQt5.QtGui import QTextCharFormat
class CalendarExample(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("QCalendarWidget Example")
self.setGeometry(100, 100, 400, 300)
self.central_widget = QWidget()
self.setCentralWidget(self.central_widget)
self.layout = QVBoxLayout()
self.central_widget.setLayout(self.layout)
self.calendar = QCalendarWidget(self)
self.calendar.setGridVisible(True)
self.calendar.setNavigationBarVisible(True)
self.calendar.setFirstDayOfWeek(Qt.Monday)
self.calendar.setSelectionMode(QCalendarWidget.SingleSelection)
self.calendar.setMinimumDate(QDate(2000, 1, 1))
self.calendar.setMaximumDate(QDate(2100, 12, 31))
self.calendar.setHorizontalHeaderFormat(QCalendarWidget.SingleLetterDayNames)
self.calendar.setVerticalHeaderFormat(QCalendarWidget.ISOWeekNumbers)
self.calendar.clicked.connect(self.on_date_clicked)
self.layout.addWidget(self.calendar)
self.label = QLabel("Selected Date: None", self)
self.layout.addWidget(self.label)
# 특정 날짜 강조
self.highlight_date(QDate(2023, 12, 25), Qt.red)
self.show()
def on_date_clicked(self, date):
self.label.setText(f"Selected Date: {date.toString()}")
def highlight_date(self, date, color):
format = QTextCharFormat()
format.setForeground(color)
self.calendar.setDateTextFormat(date, format)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = CalendarExample()
sys.exit(app.exec_())
이 예제는 다음과 같은 기능을 포함합니다:
- 기본 창 설정:
- QMainWindow를 기반으로 창을 설정하고 기본 레이아웃을 구성합니다.
- QCalendarWidget 설정:
- QCalendarWidget을 생성하고 다양한 속성을 설정합니다:
- 그리드 보이기: setGridVisible(True)
- 네비게이션 바 보이기: setNavigationBarVisible(True)
- 첫 번째 요일 설정: setFirstDayOfWeek(Qt.Monday)
- 선택 모드 설정: setSelectionMode(QCalendarWidget.SingleSelection)
- 선택할 수 있는 날짜의 범위 설정: setMinimumDate(QDate(2000, 1, 1)), setMaximumDate(QDate(2100, 12, 31))
- 헤더 형식 설정: setHorizontalHeaderFormat(QCalendarWidget.SingleLetterDayNames), setVerticalHeaderFormat(QCalendarWidget.ISOWeekNumbers)
- QCalendarWidget을 생성하고 다양한 속성을 설정합니다:
- 시그널 연결:
- 날짜가 클릭되었을 때 실행되는 on_date_clicked 메서드를 연결합니다.
- 라벨 추가:
- 선택된 날짜를 표시할 QLabel을 추가합니다.
- 특정 날짜 강조:
- highlight_date 메서드를 사용하여 특정 날짜를 강조합니다. 예제에서는 크리스마스를 빨간색으로 강조합니다.
이 통합 예제를 실행하면, 다양한 QCalendarWidget 기능을 한눈에 확인할 수 있으며, 이를 바탕으로 자신만의 커스터마이즈된 달력 위젯을 개발할 수 있을 것입니다.
728x90
반응형
'프로그래밍 > python' 카테고리의 다른 글
PyQt5 QDateEdit 위젯 사용법 (0) | 2024.06.02 |
---|---|
PyQt5 QSpinBox 사용 방법 가이드 (0) | 2024.06.02 |
PyQt5 QPixmap 사용법과 관련 속성 (0) | 2024.05.29 |
PyQt5 QTabWidget 사용법 가이드 (0) | 2024.05.28 |
PyQt5 QGroupBox 사용법 (0) | 2024.05.27 |