PyQt QDateTime

Resumo : neste tutorial, você aprenderá como criar um widget de entrada de data e hora usando a QDateTimeEditclasse PyQt.

Introdução ao widget PyQt QDateTimeEdit

A QDateTimeEditclasse permite criar um widget para edição de datas e horários:

PyQt QDateTime

O QDateTimeEditwidget permite editar a data e a hora usando o teclado ou as teclas de seta para cima/para baixo para aumentar/diminuir o valor.

Além disso, você pode usar as teclas de seta para esquerda/direita para navegar entre as seções de dia, mês, ano, hora e minuto da entrada.

O QDateTimeEditpossui os seguintes métodos e propriedades úteis:

Propriedade Descrição
date() Retorne o valor da data exibido pelo widget. O tipo de retorno é QDate. Para convertê-lo em um datetime.dateobjeto, você usa o toPyDate()método da QDateclasse.
time() Retorne a hora exibida pelo widget. O valor de retorno tem o tipo  QTime. Use o toPyTime()método para convertê-lo em um  datetime.time objeto Python.
dateTime() Retorne o valor de data e hora exibido pelo widget. O tipo de retorno é QDateTime.
minimumDate A data mais antiga que pode ser definida pelo usuário.
maximumDate A última data que pode ser definida pelo usuário.
minimumTime O primeiro horário que pode ser definido pelo usuário.
maximumTime O último horário que pode ser definido pelo usuário.
minimumDateTime A data e hora mais antigas que podem ser definidas pelo usuário.
maximumDateTime A última data e hora que pode ser definida pelo usuário.
calendarPopup Exibe um pop-up de calendário se for True.
displayFormat é uma string que formata a data exibida no widget.

O QDateTimeEditemite o editingFinished()sinal quando a edição é finalizada. Se quiser acionar uma ação sempre que o valor do QDateTimeEditwidget mudar, você pode conectar-se ao dateTimeChanged()sinal.

Se quiser criar um widget para edição de datas, você pode usar QDateEdit. Da mesma forma, você pode usar QTimeEditpara criar um widget apenas para editar horários

Exemplo de widget PyQt QDateTimeEdit

O programa a seguir usa a QDateTimeEditclasse para criar um widget para editar data e hora:

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())Linguagem de código:  Python  ( python )

Como funciona.

Primeiro, crie o QDateTimeEditwidget:

self.datetime_edit = QDateTimeEdit(self, calendarPopup=True)Linguagem de código:  Python  ( python )

Segundo, conecte o dateTimeChanged()sinal ao update()método:

self.date_edit.dateTimeChanged.connect(self.update)Linguagem de código:  Python  ( python )

Terceiro, crie um QLabelwidget para exibir o valor do date_editwidget assim que a edição for concluída:

self.result_label = QLabel('', self)Linguagem de código:  Python  ( python )

Por fim, defina o update()método que atualiza o widget de rótulo com o valor atual da entrada de data e hora:

def update(self):
    value = self.datetime_edit.dateTime()
    self.result_label.setText(value.toString("yyyy-MM-dd HH:mm"))Linguagem de código:  Python  ( python )

Saída:

Resumo

  • Use QDateTimeEditpara criar um widget de entrada de data e hora.
  • Use o dateTime()método para obter o valor atual do QDateTimeEditwidget

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *