【发布时间】:2018-11-10 17:49:00
【问题描述】:
考虑这段代码:
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()
我们希望 var 的值出现在条目中,但实际上并没有。
奇怪的是,如果我把声明var.get()放在按钮的回调函数中,就会出现var的值。
这是由 Python 中的某种局部变量优化引起的错误吗?我该怎么做才能确保textvariable 的值始终出现在条目中?
请原谅我英语不好。
【问题讨论】:
-
这个问题有一个解决方案,但你可能想考虑不使用
StringVar;他们很少需要。您可以通过小部件本身的方法获取和设置值。