QCalendarWidget을 이용해서 달력을 표시할 수 있으며, 달력은 월 단위로 표시되고, 처음 실행될 때 현재의 년,월,일로 선택되어 있습니다. (QCalendarWidget 공식 문서) 참고
27-1 예제: ex26
import sys from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout, QCalendarWidget from PyQt5.QtCore import QDate, Qt class MyApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): cal = QCalendarWidget(self) cal.setGridVisible(True) cal.clicked[QDate].connect(self.showDate) self.lbl = QLabel(self) date = cal.selectedDate() self.lbl.setText(date.toString(Qt.DefaultLocaleLongDate)) vbox = QVBoxLayout() vbox.addWidget(cal) vbox.addWidget(self.lbl) self.setLayout(vbox) self.setWindowTitle('QCalendarWidget') self.setGeometry(300, 300, 400, 300) self.show() def showDate(self, date): self.lbl.setText(date.toString(Qt.DefaultLocaleLongDate)) if __name__ == '__main__': app = QApplication(sys.argv) ex = MyApp() sys.exit(app.exec_()) |
27-2 설명
cal = QCalendarWidget(self) cal.setGridVisible(True) cal.clicked[QDate].connect(self.showDate) |
- QCalendarWidget의 객체(cal)를 하나 만듭니다.
- setGridVisible() 메서드를 True로 설정하면 날짜 사이에 그리드가 표시됩니다.
- 달력(cal) 객체의 clicked 시그널을 showDate 슬롯에 연결합니다.
self.lbl = QLabel(self) date = cal.selectedDate() self.lbl.setText(date.toString(Qt.DefaultLocaleLongDate)) |
- 달력(cal) 객체의 selectedDate() 메서드는 현재 년,월,일,요일 날짜 정보를 얻어옵니다.
- 현재 날짜 정보를 라벨에 해당지역표시로 표시되도록 해줍니다.
vbox = QVBoxLayout() vbox.addWidget(cal) vbox.addWidget(self.lbl) |
수직 박스 레이아웃을 이용해서, 달력과 라벨을 수직으로 배치해줍니다.
def showDate(self, date): self.lbl.setText(date.toString(Qt.DefaultLocaleLongDate)) |
showDate 메서드에서 날짜를 클릭할 때마다 라벨 텍스트가 선택한 날짜를 해당지역표시로 표시되도록 합니다.
27-3 결과
'프로그래밍 > PyQt5 GUI' 카테고리의 다른 글
29. QDoubleSpinBox (0) | 2021.07.27 |
---|---|
28. QSpinBox (0) | 2021.07.26 |
26. QPixmap (0) | 2021.07.26 |
25. QTabWidget (0) | 2021.07.26 |
24. QGroupBox (0) | 2021.07.26 |