如何在StringVar()中包含静态文本并让其随变量变化而更新?

2 投票
1 回答
10743 浏览
提问于 2025-04-15 22:22

我想创建一个看起来像这样的StringVar():

someText = "The Spanish Inquisition" # Here's a normal variable whose value I will change

eventually

TkEquivalent = StringVar() # and here's the StringVar()

TkEquivalent.set(string(someText)) #and here I set it equal to the normal variable. When someText changes, this variable  will too...

但是:

TkEquivalent.set("Nobody Expects " + string(someText))

如果我这样做,StringVar()就不会自动更新了!我该怎么做才能在包含这些静态文本的同时,让StringVar()能够反映someText的变化呢?

谢谢你的帮助。

1 个回答

4

StringVar 这个东西并不是和 Python 里的变量(你平常说的变量)绑定在一起,而是和 Tkinter 这个界面组件绑定在一起,像这样:

a_variable= Tkinter.StringVar()
an_entry= Tkinter.Entry(textvariable=a_variable)

从那以后,通过 a_variable.set 方法所做的任何改变,都会在 an_entry 这个输入框里显示出来;而如果用户在 an_entry 输入框里修改了内容,这个变化也会更新到 a_variable 里。

不过,如果你不想这样的话,你可以在代码里对同一个 StringVar 有两个(或者更多)引用:

var1= var2= Tkinter.StringVar()
var1.set("some text")
assert var1.get() == var2.get() # they'll always be equal

撰写回答