如何将变量连接到Entry控件?

10 投票
1 回答
52215 浏览
提问于 2025-04-15 20:53

我想把一个变量和Tkinter的输入框(entry widget)关联起来,具体来说是想要做到以下两点:

  1. 每当我在输入框里输入内容(也就是改变了“内容”),这个变量就会自动更新为我输入的值。我不想先按什么“更新值”的按钮之类的。

  2. 如果这个变量在程序的其他地方被改变了,我希望输入框里显示的内容也能自动更新。我觉得可以通过使用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()

撰写回答