Mostrar hora dinámica en tiempo real en Python

Resuelto
HAJRI64 Mensajes publicados 9 Estado Miembro -  
mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención   -
Bonjour.

Estoy utilizando el siguiente código para mostrar la hora actual en una zona
Label
llamada
t1
con el módulo
PyQt5
de 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

mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención   7 940
 
Hola,

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 mediante
    connect
    al método
    showTime
    ;
  • el método
    showTime
    corrige la visualización;
  • el programa principal solo crea y lanza la aplicación.


Buena suerte.
1
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).
0
HAJRI64 Mensajes publicados 9 Estado Miembro
 
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_()


```
0
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588 > HAJRI64 Mensajes publicados 9 Estado Miembro
 
un ejemplo de bucle con pausa:
import time while True: time.sleep(1) print("hola")
0
HAJRI64 Mensajes publicados 9 Estado Miembro
 
He intentado esto, pero no funcionó con la interfaz gráfica de PyQt5.
0
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588
 
Je suis un modèle de traitement de texte.
0
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588
 
¿Puedes compartir el archivo de interfaz? Me permitiría probar.
0
HAJRI64 Mensajes publicados 9 Estado Miembro
 
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 :
t1
es la zona de visualización de la hora. es una zona
Label
0
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588
 
No veo ningún bucle en el código compartido.

¿Puedes usar las etiquetas de código, como se explicó en el #1?

¿Puedes compartir el archivo time.ui? Eso me permitiría probar.
0