Estoy trabajando para obtener un widget de etiquetas python/tkinter para actualizar sus contenidos. Por un hilo anterior hoy, seguí instrucciones sobre cómo armar los widgets. Sin embargo, en tiempo de ejecución, el widget de etiqueta NO cambia el contenido, sino que simplemente conserva su contenido original. Por lo que puedo decir, decrement_widget() nunca se llama en absoluto. ¿Algunas ideas?Haciendo la actualización del widget de la etiqueta python/tkinter?
def snooze (secs):
"""
Snoozes for the given number of seconds. During the snooze, a progress
dialog is launched notifying the
"""
root = Tkinter.Tk()
prompt = 'hello'
label1 = Tkinter.Label(root, text=prompt, width=len(prompt))
label1.pack()
remaining = secs
def decrement_label():
text = "Snoozing %d sec(s)" % remaining
remaining -= 1
label1.config(text=text, width=100)
label1.update_idletasks()
for i in range(1, secs + 1):
root.after(i * 1000, decrement_label)
root.after((i+1) * 1000, lambda : root.destroy())
root.mainloop()
por su recomendación, me cambió la función decrement_label a 'text = ...; restante - = 1; sv = Tkinter.StringVar(); sv.Set (texto); label1.conf (text = sv, width = 100); label1.update_idletasks() '. Sin embargo, esto no ha tenido ningún efecto en el comportamiento del tiempo de ejecución. ¡La función decrement_label NO parece llamarse en absoluto! –
También descubrí que la declaración 'restante - = 1' parece estar causando el problema. Python silenciosamente falla de alguna manera cuando encuentra esa declaración. ¿Hay algo malo con eso? –
Debe establecer 'StringVar' cuando crea' Label', y luego modificar esa misma instancia de 'StringVar'. No debería necesitar llamar repetidamente a 'label1.conf'. Publica tu código completamente actualizado. –