Considérez ce code:Python Tkinter Entrée ne montrant pas la valeur actuelle de textvariable
from tkinter import *
from tkinter.ttk import *
tk=Tk()
def sub():
var=StringVar(value='default value')
def f(): pass
Entry(tk,textvariable=var).pack()
Button(tk,text='OK',command=f).pack()
sub()
mainloop()
Nous nous attendons à la valeur de var
apparaît dans l'entrée, mais en réalité il ne fonctionne pas.
La chose étrange est que si je mets la déclaration var.get()
dans la fonction de rappel du bouton, la valeur de var
apear.
Est-ce un bug causé par une sorte d'optimisation variable locale en Python? Et que puis-je faire pour m'assurer que la valeur de textvariable
apparaîtra toujours dans l'entrée?
Veuillez m'excuser pour mon mauvais anglais.
Il y a une solution à ce problème, mais vous voudrez peut-être envisager d'utiliser un '_not_ StringVar'; ils sont rarement nécessaires. Vous pouvez obtenir et définir la valeur via des méthodes sur le widget lui-même. –