Как я могу включить статический текст в StringVar () и по-прежнему обновлять его до изменений переменных? - PullRequest
2 голосов
/ 05 мая 2010

Я хотел бы создать StringVar (), который будет выглядеть примерно так:

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

в конечном счете

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 голосов
/ 03 июня 2010

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
...