Вопрос

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

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

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

Я прочитал пример на 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()
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top