Soy bastante nuevo en Python y quiero establecer una etiqueta en Tkinter usando mi función de cuenta atrás. En este momento todo lo que hace es establecer la etiqueta en "10" una vez que se alcanza el 10 y realmente no entiendo por qué. Además, incluso si tengo el temporizador impreso en un terminal en lugar de "¡se acabó el tiempo!" poco nunca se imprime.Hacer un temporizador de cuenta regresiva con Python y Tkinter?
import time
import tkinter as tk
class App():
def __init__(self):
self.root = tk.Tk()
self.label = tk.Label(text="null")
self.label.pack()
self.Pomodoro()
self.root.mainloop()
## Define a timer.
def Pomodoro(self):
p = 10.00
t = time.time()
n = 0
while n - t < p: ## Loop while the number of seconds is less than the integer defined in "p"
n = time.time()
if n == t + p:
self.label.configure(text="Time's up!")
else:
self.label.configure(text=round(n - t))
app=App()
EDIT: Una respuesta anterior mostró que la razón por la que nunca trabajaron "Time's up!"
es a causa de lo improbable que era para n
para igualar exactamente t + p
debido a la imprecisión con el uso de time.time
. La versión final basado en la consola del temporizador fue:
import time
## Define a static Pomodoro timer.
def Countdown():
p = 2.00
alarm = time.time() + p
while True: ## Loop infinitely
n = time.time()
if n < alarm:
print(round(alarm - n))
else:
print("Time's up!")
break
Countdown()
Sin embargo, esto no funciona con Tkinter por las razones Bryan Oakley menciona en su respuesta y comentarios.
aquí hay un [ejemplo de código de una cuenta atrás implementado usando Tkinter] (https://gist.github.com/zed/1951815) – jfs