如何将变量连接到Entry控件?
我想把一个变量和Tkinter的输入框(entry widget)关联起来,具体来说是想要做到以下两点:
每当我在输入框里输入内容(也就是改变了“内容”),这个变量就会自动更新为我输入的值。我不想先按什么“更新值”的按钮之类的。
如果这个变量在程序的其他地方被改变了,我希望输入框里显示的内容也能自动更新。我觉得可以通过使用textvariable来实现这个功能。
我看过这个例子,但它并没有完全帮助我实现我想要的效果。我觉得可能可以通过输入框的“validate”来确保第一个条件的实现。有没有什么想法?
1 个回答
15
我觉得你想要的东西大概是这样的。在下面的例子中,我创建了一个变量 myvar
,并把它设置为一个 Label
和一个 Entry
组件的 textvariable
。这样一来,这两个组件就关联在一起了,Entry 组件里的内容一旦改变,Label 也会自动更新。
你还可以对变量进行 跟踪设置,比如可以把变化写到标准输出。
from tkinter import *
root = Tk()
root.title("MyApp")
myvar = StringVar()
def mywarWritten(*args):
print "mywarWritten",myvar.get()
myvar.trace("w", mywarWritten)
label = Label(root, textvariable=myvar)
label.pack()
text_entry = Entry(root, textvariable=myvar)
text_entry.pack()
root.mainloop()