Как подключить переменную к виджету ввода?

Я пытаюсь связать переменную с виджетом ввода Tkinter таким образом, чтобы:

  1. всякий раз, когда я изменяю значение ("содержимое") записи, главным образом, введя что-то в него, переменной автоматически присваивается значение того, что я набрал. Без необходимости нажимать кнопку "обновить значение" или что-то в этом роде.

  2. всякий раз, когда переменная изменяется (какой-либо другой частью программы), я хочу значение записи отображается для автоматической настройки. Я считаю, что это может работать через textvariable.

Я прочитал пример на http://effbot.org/tkinterbook/entry.htm, но это не совсем помогает мне в том, что я имею в виду. У меня такое чувство, что есть способ обеспечить первое условие с помощью "validate"записи. Есть идеи?

1 ответов


Я думаю, что вы хотите что-то вроде этого. В приведенном ниже примере я создал переменную myvar и назначил его textvariable и Label и Entry виджеты. Таким образом, оба связаны, и изменения в виджете ввода будут автоматически отражаться в метке.

вы можете установить след по переменным, например, для записи в stdout.

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()