Как подключить переменную к виджету Entry?
-
22-09-2019 - |
Вопрос
Я пытаюсь связать переменную с виджетом записи Tkinter таким образом:
Всякий раз, когда я меняю значение («содержимое») записи, в основном вводя в нее что-то, переменной автоматически присваивается значение того, что я набрал.Без необходимости сначала нажимать кнопку «Обновить значение» или что-то в этом роде.
Всякий раз, когда переменная изменяется (какой-либо другой частью программы), я хочу, чтобы отображаемое значение записи корректировалось автоматически.Я считаю, что это может работать через текстовую переменную.
Я прочитал пример на http://effbot.org/tkinterbook/entry.htm, но это не совсем помогает мне в том, что я имею в виду.У меня такое ощущение, что есть способ обеспечить первое условие с помощью «проверки» записи.Есть идеи?
Решение
Я думаю, ты хочешь что-то вроде этого.В примере ниже я создал переменную myvar
и поручил это сделать textvariable
обоих Label
и Entry
виджеты.Таким образом, оба они связаны, и изменения в виджете «Ввод» автоматически отражаются в «Метка».
Вы также можете установить трассировку по переменным, напримердля записи в стандартный вывод.
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()