Mostrar hora dinámica en tiempo real en Python
Resuelto
Bonjour.
Estoy utilizando el siguiente código para mostrar la hora actual en una zona
Mi pregunta es cómo hacer para mostrar la fecha cada segundo, es decir, hacer un reloj dinámico.
Estoy utilizando el siguiente código para mostrar la hora actual en una zona
Labelllamada
t1con el módulo
PyQt5de python.
Mi pregunta es cómo hacer para mostrar la fecha cada segundo, es decir, hacer un reloj dinámico.
now = datetime.now() t2 = now.strftime("%H:%M:%S") win.t1.setText(t2)
4 respuestas
Hola,
Una pequeña búsqueda en Google te lleva, por ejemplo, a esta página, que responde exactamente a tu problema.
Contrariamente a lo que se dijo anteriormente, hacer un bucle no es la forma correcta de proceder, ya que todos los módulos que permiten mostrar una interfaz gráfica (ya sea PyQt, GTK o Tk) utilizan un bucle principal para ejecutar el programa. En términos de implementación, eso significa que todo tu programa reacciona a eventos (por ejemplo, un clic del mouse, una entrada de teclado o, en este caso, un paso de tiempo) y que el programa principal solo lanza la ventana.
Ahora, si detallamos el programa anterior:
Buena suerte.
Una pequeña búsqueda en Google te lleva, por ejemplo, a esta página, que responde exactamente a tu problema.
# importando la biblioteca requerida import sys from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtWidgets import QVBoxLayout, QLabel from PyQt5.QtGui import QFont from PyQt5.QtCore import QTimer, QTime, Qt class Window(QWidget): def __init__(self): super().__init__() # estableciendo la geometría de la ventana principal self.setGeometry(100, 100, 800, 400) # creando un diseño vertical layout = QVBoxLayout() # creando objeto de fuente font = QFont('Arial', 120, QFont.Bold) # creando un objeto de etiqueta self.label = QLabel() # alineando al centro la etiqueta self.label.setAlignment(Qt.AlignCenter) # estableciendo la fuente a la etiqueta self.label.setFont(font) # añadiendo la etiqueta al diseño layout.addWidget(self.label) # estableciendo el diseño en la ventana principal self.setLayout(layout) # creando un objeto temporizador timer = QTimer(self) # añadiendo acción al temporizador timer.timeout.connect(self.showTime) # actualiza el temporizador cada segundo timer.start(1000) # método llamado por el temporizador def showTime(self): # obteniendo la hora actual current_time = QTime.currentTime() # convirtiendo el objeto QTime a cadena label_time = current_time.toString('hh:mm:ss') # mostrándolo en la etiqueta self.label.setText(label_time) # crear app de pyqt5 App = QApplication(sys.argv) # crear la instancia de nuestra ventana window = Window() # mostrando todos los widgets window.show() # iniciar la app App.exit(App.exec_()) Contrariamente a lo que se dijo anteriormente, hacer un bucle no es la forma correcta de proceder, ya que todos los módulos que permiten mostrar una interfaz gráfica (ya sea PyQt, GTK o Tk) utilizan un bucle principal para ejecutar el programa. En términos de implementación, eso significa que todo tu programa reacciona a eventos (por ejemplo, un clic del mouse, una entrada de teclado o, en este caso, un paso de tiempo) y que el programa principal solo lanza la ventana.
Ahora, si detallamos el programa anterior:
-
timer
permite que se dispare un evento cada segundo; este se activa medianteconnect
al métodoshowTime
; - el método
showTime
corrige la visualización; - el programa principal solo crea y lanza la aplicación.
Buena suerte.
yg_be
Mensajes publicados
23437
Fecha de registro
Estado
Colaborador
Última intervención
Ambassadeur
1 588
Hola,
solo muestras una parte de tu código.
Gracias por usar las etiquetas de código cuando compartes código: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
sugiero hacer un bucle, en el que también incluyas una pausa de un segundo (o menos, dependiendo de la precisión requerida).
solo muestras una parte de tu código.
Gracias por usar las etiquetas de código cuando compartes código: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
sugiero hacer un bucle, en el que también incluyas una pausa de un segundo (o menos, dependiendo de la precisión requerida).
Merci pour la réponse. Voici votre code traduit :
```html
```
from datetime import datetime
from PyQt5.uic import loadUi
from PyQt5.QtWidgets import QApplication
app=QApplication([])
win=loadUi('arith.ui')
win.show()
while True:
now = datetime.now()
t2 = now.strftime("%H:%M:%S")
win.t1.setText(t2)
app.processEvents()
time.sleep(1) # Pause de 1 seconde avant la prochaine mise à jour
app.exec_()
```
from datetime import datetime import time from PyQt5.uic import loadUi from PyQt5.QtWidgets import QApplication app=QApplication([]) win=loadUi('time.ui') win.show() now = datetime.now() t2 = now.strftime("%H:%M:%S") win.t1.setText(t2) Nota :
t1es la zona de visualización de la hora. es una zona
Label