PYQT QDateTimeEdit и формат «дд.ММ.гггг»

#pyqt #qdatetime

Вопрос:

У меня небольшая проблема с вводом даты. Дата должна быть введена в формате ДД.ММ.ГГГГ (например, 03.06.2021)

Когда я хочу ввести 31.05.2021, я должен сначала перейти к месяцу, ввести там 05, а затем я могу ввести 31. Июнь получил 30 дней, и поэтому я не могу изначально ввести 31. Есть идеи, как отложить проверку даты до тех пор, пока поле не будет оставлено?

         self.f1 = QDateTimeEdit(QDate.currentDate())
        self.f1.setDisplayFormat("dd.MM.yyyy")
        self.f1.setFixedWidth(85)
        self.f1.setMinimumDate(QDate.fromString("01.01.2020", "dd.MM.yyyy"))
        self.f1.setMaximumDate(QDate(QDate.currentDate()))

 

Комментарии:

1. Начиная с даты в июне, вы на самом деле можете изначально ввести 31, но, конечно, будет отображаться 30. Однако, когда вы введете 5 в поле месяц, день автоматически переместится на 31. Обратите внимание, что этого не произойдет, если вы сначала наберете 30. Таким образом, виджет, по-видимому, достаточно умен, чтобы «знать», каковы ваши намерения.

2. Мой виджет не настолько умен. Как только я ввожу 1 из 31, 1 переходит в поле месяц. Курсор автоматически переместился в это поле. Если бы существовало решение для предотвращения автоматического перехода, это решило бы проблему.

3. Я использовал тот же виджет, что и вы, и он отлично работает для меня.