Tkinter Dynami c метка, которая отображает результат уравнения? - PullRequest
0 голосов
/ 07 апреля 2020

Извинения, если это было решено где-то еще. Я не смог найти никаких решений, которые бы не основывались на запуске функции / нажатии кнопки.

У меня есть два столбца слотов входа, где слот 1 - слот 2 = результат по столбцу 3, я хотел бы чтобы показать результат в прямом эфире. Возможно ли это?

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

Прямо сейчас, у меня просто есть set , который, как я знаю, работает только при запуске

preview

t1_in = IntVar(root, value=0)
t1_out = IntVar(root, value=0)

total1 = IntVar(root, value=0)
total1.set(t1_in.get() - t1_out.get())

in1 = Entry(root, width=10,textvariable=t1_in).grid(row=4, column=in_col)
out1 = Entry(root, width=10,textvariable=t1_out).grid(row=4, column=out_col)

t1 = Label(root, textvariable=total1, font=30).grid(row=4, column=t_col)

Есть ли способ напрямую отобразить total1, показывая t1_in - t1_out , когда пользователь вводит в текстовое поле новые значения?

1 Ответ

0 голосов
/ 07 апреля 2020

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

t1_in = IntVar(root, value=0)
t1_out = IntVar(root, value=0)

total1 = IntVar(root, value=0)


in1 = Entry(root, width=10,textvariable=t1_in).grid(row=4, column=in_col)
out1 = Entry(root, width=10,textvariable=t1_out).grid(row=4, column=out_col)

def dynamic_total(var, index, mode):
    total1.set(t1_in.get() - t1_out.get())

t1_in.trace_add('write', dynamic_total)
t1_out.trace_add('write', dynamic_total)

t1 = Label(root, textvariable=total1, font=30).grid(row=4, column=t_col)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...