PyQt QDateTimeEdit в Python — ввод даты и времени

В этом уроке вы узнаете, как создать виджет ввода даты и времени с помощью класса PyQt QDateTimeEdit в Python.

Что такое PyQt QDateTimeEdit

Класс QDateTimeEdit позволяет создать виджет для редактирования даты и времени:

PyQt 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"))

Выход:

Вывод

Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *