Resumo : neste tutorial, você aprenderá como criar um widget de entrada de data e hora usando a
classe PyQt.QDateTimeEdit
Introdução ao widget PyQt QDateTimeEdit
A
classe permite criar um widget para edição de datas e horários:QDateTimeEdit
O
widget permite editar a data e a hora usando o teclado ou as teclas de seta para cima/para baixo para aumentar/diminuir o valor.QDateTimeEdit
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
possui os seguintes métodos e propriedades úteis:QDateTimeEdit
Propriedade | Descrição |
---|---|
date() |
Retorne o valor da data exibido pelo widget. O tipo de retorno é . Para convertê-lo em um datetime.date objeto, você usa o toPyDate() método da classe. |
time() |
Retorne a hora exibida pelo widget. O valor de retorno tem o tipo . 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 é . |
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
emite o QDateTimeEdit
editingFinished()
sinal quando a edição é finalizada. Se quiser acionar uma ação sempre que o valor do
widget mudar, você pode conectar-se ao QDateTimeEdit
dateTimeChanged()
sinal.
Se quiser criar um widget para edição de datas, você pode usar QDateEdit
. Da mesma forma, você pode usar QTimeEdit
para criar um widget apenas para editar horários
Exemplo de widget PyQt QDateTimeEdit
O programa a seguir usa a
classe para criar um widget para editar data e hora: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())
Linguagem de código: Python ( python )
Como funciona.
Primeiro, crie o
widget:QDateTimeEdit
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
widget para exibir o valor do QLabel
widget assim que a edição for concluída:date_edit
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
para criar um widget de entrada de data e hora.QDateTimeEdit
- Use o
dateTime()
método para obter o valor atual do
widgetQDateTimeEdit