Search code examples
pythonpyqtpyqt5qcalendarwidget

How to get date from QCalendarWidget object and set it as minimum date?


I had 2 QCalendarWidget objects and i need to set selected date from first object as minimum date in second calendar. My code for calendar looks like that

class Calendar(QtWidgets.QWidget):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)
        self.VBox = QtWidgets.QVBoxLayout()
        self.cal = QtWidgets.QCalendarWidget(self)
        self.cal.setGridVisible(True)
        self.VBox.addWidget(self.cal)
        self.setLayout(self.VBox)

In other class I create 2 objects type Calendar

        self.date1 = Calendar()
        self.date2 = Calendar()

I tried to set minimum date for self.date2 like that

self.date2.cal.setMinimumDate(self.date1.cal.selectedDate())

But it doesn't work. It set up current date as minimum date, not selected date from first calendar. I know why it happens — because selectedDate() authomatically set up current date when can not get something else. But going back to my title question, how to set up selectes date from 1st calendar as minimum for second cal?


Solution

  • You have to use the clicked signal that is emitted every time you select a date:

    self.date2.cal.setMinimumDate(self.date1.cal.selectedDate()) # initial value
    self.date1.cal.clicked.connect(self.date2.cal.setMinimumDate)