¿Cómo crear un temporizador utilizando tkinter?

Necesito codificar un progtwig con la biblioteca tkinter de Python.

Mi problema principal es que no sé cómo crear un temporizador o un reloj como hh:mm:ss .

Lo necesito para actualizarse (eso es lo que no sé cómo hacer).

Las ventanas raíz de Tkinter tienen un método llamado que se puede usar para progtwigr una función para que se llame después de un período de tiempo determinado. Si esa función llama por sí misma after haber configurado un evento recurrente automáticamente.

Aquí hay un ejemplo de trabajo:

 # for python 3.x use 'tkinter' rather than 'Tkinter' import Tkinter as tk import time class App(): def __init__(self): self.root = tk.Tk() self.label = tk.Label(text="") self.label.pack() self.update_clock() self.root.mainloop() def update_clock(self): now = time.strftime("%H:%M:%S") self.label.configure(text=now) self.root.after(1000, self.update_clock) app=App() 

Tenga en cuenta que after no se garantiza que la función se ejecutará exactamente a tiempo. Solo progtwig el trabajo para ejecutarse después de un período de tiempo determinado. Si la aplicación está ocupada, puede haber un retraso antes de que se llame, ya que Tkinter es de un solo hilo. El retraso se mide típicamente en microsegundos.

Ejemplo de reloj Python3 con el uso de frame.after () en lugar de la aplicación de nivel superior. También muestra la actualización de la etiqueta con un StringVar ()

 #!/usr/bin/env python3 # Display UTC. # started with https://docs.python.org/3.4/library/tkinter.html#module-tkinter import tkinter as tk import time def current_iso8601(): """Get current date and time in ISO8601""" # https://en.wikipedia.org/wiki/ISO_8601 # https://xkcd.com/1179/ return time.strftime("%Y%m%dT%H%M%SZ", time.gmtime()) class Application(tk.Frame): def __init__(self, master=None): tk.Frame.__init__(self, master) self.pack() self.createWidgets() def createWidgets(self): self.now = tk.StringVar() self.time = tk.Label(self, font=('Helvetica', 24)) self.time.pack(side="top") self.time["textvariable"] = self.now self.QUIT = tk.Button(self, text="QUIT", fg="red", command=root.destroy) self.QUIT.pack(side="bottom") # initial time display self.onUpdate() def onUpdate(self): # update displayed time self.now.set(current_iso8601()) # schedule timer to call myself after 1 second self.after(1000, self.onUpdate) root = tk.Tk() app = Application(master=root) root.mainloop() 
 from tkinter import * import time tk=Tk() def clock(): t=time.strftime('%I:%M:%S',time.localtime()) if t!='': label1.config(text=t,font='times 25') tk.after(100,clock) label1=Label(tk,justify='center') label1.pack() clock() tk.mainloop() 

Acabo de crear un temporizador simple utilizando el patrón MVP (sin embargo, puede ser excesivo para ese proyecto simple). Tiene salir, iniciar / pausar y un botón de parada. La hora se muestra en formato HH: MM: SS. El conteo de tiempo se implementa mediante un subproceso que se ejecuta varias veces por segundo y la diferencia entre la hora en que se inició el temporizador y la hora actual.

Código fuente en github