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

  1. 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
  2. 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
    1. 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
      1. 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
  3. HAJRI64 Mensajes publicados 9 Estado Miembro
     
    He intentado esto, pero no funcionó con la interfaz gráfica de PyQt5.
    0
    1. 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
    2. 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
  4. 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
    1. 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