from PyQt5.QtWidgets import QWidget, QApplication, QLabel, QVBoxLayout, QCalendarWidget,QPushButton
from PyQt5.QtCore import Qt, QDate
import sys
class 달력위젯(QWidget):
def __init__(self):
super().__init__()
self.UI초기화()
def UI초기화(self):
self.cal = QCalendarWidget()
self.cal.setGridVisible(True)
self.cal.setDateRange(QDate(2020, 1, 1), QDate.currentDate())
self.cal.clicked[QDate].connect(self.PastDate)
self.label1 = QLabel(self)
self.date = self.cal.selectedDate()
self.label1.setText(self.date.toString())
self.label2 = QLabel(self)
previousBtn = QPushButton('이전 달')
previousBtn.clicked.connect(self.preMonth)
nextBtn = QPushButton('다음 달')
nextBtn.clicked.connect(self.nextMonth)
vbox = QVBoxLayout()
vbox.addWidget(self.cal)
vbox.addWidget(self.label1)
vbox.addWidget(self.label2)
vbox.addWidget(previousBtn)
vbox.addWidget(nextBtn)
self.setLayout(vbox)
self.setWindowTitle('QCalendarWidget')
self.setGeometry(300, 300, 500, 400)
self.show()
def PastDate(self, date):
self.label1.setText(date.toString())
self.label2.setText(f'2020년 1월 1일부터 {QDate(2020,1,1).daysTo(date)}일이 지났습니다.')
def preMonth(self):
self.cal.showPreviousMonth()
def nextMonth(self):
self.cal.showNextMonth()
프로그램무한반복 = QApplication(sys.argv)
실행인스턴스 = 달력위젯()
프로그램무한반복.exec_()
QCalendarWidget은 달력을 표시할 수 있는 위젯입니다. 이를 통해 날짜별 다양한 연산을 수행할 수 있습니다. 공식문서, Slots, Signals를 함께 개시합니다.
QCalendarWidget - Qt for Python
출처 : https://doc.qt.io/qtforpython/PySide2/QtWidgets/QCalendarWidget.html
self.cal = QCalendarWidget()
self.cal.setGridVisible(True)
self.cal.setDateRange(QDate(2020, 1, 1), QDate.currentDate())
self.cal.clicked[QDate].connect(self.PastDate)
def PastDate(self, date):
self.label1.setText(date.toString())
self.label2.setText(f'2020년 1월 1일부터 {QDate(2020,1,1).daysTo(date)}일이 지났습니다.')
self.label1 = QLabel(self)
self.date = self.cal.selectedDate()
self.label1.setText(self.date.toString())
self.label2 = QLabel(self)
previousBtn = QPushButton('이전 달')
previousBtn.clicked.connect(self.preMonth)
nextBtn = QPushButton('다음 달')
nextBtn.clicked.connect(self.nextMonth)
def preMonth(self):
self.cal.showPreviousMonth()
def nextMonth(self):
self.cal.showNextMonth()