PyQt QDateTimeEdit в Python — ввод даты и времени
В этом уроке вы узнаете, как создать виджет ввода даты и времени с помощью класса PyQt QDateTimeEdit в Python.
Что такое PyQt QDateTimeEdit
Класс QDateTimeEdit позволяет создать виджет для редактирования даты и времени:
Виджет QDateTimeEdit позволяет редактировать дату и время с помощью клавиатуры или клавиш со стрелками вверх/вниз для увеличения/уменьшения значения.
Кроме того, вы можете использовать клавиши со стрелками влево/вправо для перемещения между разделами дня, месяца, года, часа и минут записи.
QDateTimeEdit имеет следующие полезные методы и свойства:
Свойство | Описание |
---|---|
date() | Возвращает значение даты, отображаемое виджетом. Тип возвращаемого значения — QDate. Чтобы преобразовать его в объект datetime.date, используйте метод toPyDate() класса QDate. |
time() | Время, отображаемое виджетом. Возвращаемое значение имеет тип QTime. Используйте метод toPyTime(), чтобы преобразовать его в объект Python datetime.time. |
dateTime() | Возвращает значение даты и времени, отображаемое виджетом. Тип возвращаемого значения — QDateTime. |
minimumDate | Самая ранняя дата, которую может установить пользователь. |
maximumDate | Самая поздняя дата, которую может установить пользователь. |
minimumTime | Самое раннее время, которое можно установить. |
maximumTime | Самое позднее время, которое можно установить. |
minimumDateTime | Самая ранняя дата и время, которые может установить пользователь. |
maximumDateTime | Самая поздняя дата и время. |
calendarPopup | Отображает всплывающее окно календаря, если установлено значение True. |
displayFormat | Это строка, которая форматирует дату, отображаемую в виджете. |
QDateTimeEdit выдает сигнал editingFinished(), когда редактирование завершено. Если вы хотите запускать действие всякий раз, когда изменяется значение виджета QDateTimeEdit, вы можете подключиться к сигналу dateTimeChanged().
Если вы хотите создать виджет для редактирования дат, вы можете использовать QDateEdit. Аналогично, вы можете использовать QTimeEdit, чтобы создать виджет только для редактирования времени
Пример создания виджета с PyQt QDateTimeEdit
Следующая программа использует класс QDateTimeEdit для создания виджета для редактирования даты и времени:
import sys from PyQt6.QtWidgets import QApplication, QWidget, QDateTimeEdit, QLabel, QFormLayout class MainWindow(QWidget): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setWindowTitle('PyQt QDateTimeEdit') self.setMinimumWidth(200) layout = QFormLayout() self.setLayout(layout) self.datetime_edit = QDateTimeEdit(self, calendarPopup=True) self.datetime_edit.dateTimeChanged.connect(self.update) self.result_label = QLabel('', self) layout.addRow('Date:', self.datetime_edit) layout.addRow(self.result_label) self.show() def update(self): value = self.datetime_edit.dateTime() self.result_label.setText(value.toString("yyyy-MM-dd HH:mm")) if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() sys.exit(app.exec())
Как это работает.
- Сначала создайте виджет QDateTimeEdit:
self.datetime_edit = QDateTimeEdit(self, calendarPopup=True)
- Во-вторых, подключите сигнал dateTimeChanged() к методу update():
self.date_edit.dateTimeChanged.connect(self.update)
- В-третьих, создайте виджет QLabel для отображения значения виджета date_edit после завершения редактирования:
self.result_label = QLabel('', self)
- Наконец, определите метод update(), который обновляет виджет метки текущим значением записи даты и времени:
def update(self): value = self.datetime_edit.dateTime() self.result_label.setText(value.toString("yyyy-MM-dd HH:mm"))
Выход: