Je travaille sur l'obtention d'un widget d'étiquette python/tkinter pour mettre à jour son contenu. Par un fil plus tôt aujourd'hui, j'ai suivi des instructions sur la façon de mettre en place les widgets. À l'exécution, cependant, le widget d'étiquette ne change pas le contenu, mais conserve simplement son contenu d'origine. Pour autant que je sache, decrement_widget() n'est jamais appelé du tout. Des idées?Mise à jour du widget d'étiquette 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()
par votre recommandation, j'ai changé la fonction decrement_label pour « text = ...; reste - = 1; sv = Tkinter.StringVar(); sv.Set (texte); label1.conf (texte = sv, largeur = 100); label1.update_idletasks() '. Cependant, cela n'a eu aucun effet sur le comportement d'exécution. La fonction decrement_label n'a PAS l'air d'être appelée du tout! –
J'ai également compris que l'instruction 'restant - = 1' semble être à l'origine du problème. Python échoue silencieusement quand il rencontre cette déclaration. Y a-t-il quelque chose qui ne va pas? –
Vous devez définir 'StringVar' lorsque vous créez le' Label', puis modifiez cette même instance de 'StringVar'. Vous ne devriez pas avoir besoin d'appeler 'label1.conf' à plusieurs reprises. Postez votre code entièrement mis à jour. –