Choque de Tkinter en Python.
Estaba intentando hacer un cronómetro en Python pero cada vez que deja de funcionar debido a un desbordamiento, ¿alguien puede arreglar esto por favor??
Código:
import time
from tkinter import *
cur = time.time()
root = Tk()
def functio():
while True:
s = time.time() - cur
l1 = Label(root,text=s)
l1.pack()
l1.destroy()
time.sleep(0.5)
Button(root, text='Comenzar', command=functio).pack()
root.mainloop()
davy.ai
Hay algunos problemas con el código proporcionado:
while
enfunctio()
se ejecuta infinitamente, lo cual no es necesario para un cronómetro.Label
se está destruyendo después de la creación, por lo que no será visible para el usuario.time.sleep(0.5)
no es necesaria, ya que puede hacer que la GUI se congele y no responda.Para solucionar estos problemas, aquí hay una versión actualizada del código:
Esta versión del código utiliza la función
time.strftime()
para formatear el tiempo transcurrido en horas, minutos y segundos. También utiliza el métodoafter()
del objetoTk
para programar que la funciónupdate_label()
se ejecute de nuevo después de 1 milisegundo, en lugar de utilizar un buclewhile
o una llamada atime.sleep()
.Tenga en cuenta que el widget
label
se crea dentro de la funciónstart_stopwatch()
, y la variablestart_time
se declara como global para que pueda ser accesible por las otras funciones. Además, el widgetLabel
no se está destruyendo después de la creación, ya que debe ser visible para el usuario durante toda la duración del cronómetro.