Как отобразить информацию одного поля entry tkinter в другом поле entry

Сейчас создаю небольшую програмку для расчета.

Проблема вот в чем: есть два поля entry. Нужно ввести число в первое поле, при этом во втором поле должно появиться это число умноженное на 12%.

Как сделать это через нажатие на кнопку, я вполне себе представляю, а вот как сделать так чтобы число умноженное на 12% сразу появилось во втором поле, не могу сообразить.

Может кто подскажет легкий пример или скинет ссылку где посмотреть соответствующий пример?


Ответы (2 шт):

Автор решения: Amgarak

Связанный ответ.

Вот хорошая статья, обратите внимание на пример Отслеживание изменения переменной - trace_add()

И небольшой пример:

import tkinter as tk

def auto_update(*args):
    try:
        value = float(entry1.get())
        result = value * 0.12
        str2_var.set(f"{result:.2f}")
    except ValueError:
        str2_var.set("")

root = tk.Tk()
root.title("auto_update")

str1_var = tk.StringVar()
entry1 = tk.Entry(root, textvariable=str1_var)
entry1.pack()

str2_var = tk.StringVar()
entry2 = tk.Entry(root, textvariable=str2_var, state="readonly")
entry2.pack()

str1_var.trace_add("write", auto_update)

root.mainloop()
→ Ссылка
Автор решения: MS.music9

Я думаю, вы имеете в виду это:

...


# функция-хэндлер
def on_entry1_change(*args):
  global entry_var, entry2
  try:
    # вставляем
    entry2.insert(0, str(float(entry_var.get() * 0.12))
  except TypeError:
    # если entry1 не число
    ...


# StringVar для хранения текста Entry
entry_var = tk.StringVar()


# привязка хэндлера к StringVar
entry_var.trace("w", on_entry1_change)

# создание Entry с аргументом — наша переменная
entry1 = tk.Entry(textvariable = entry_var)
entry1.pack()

entry2 = tk.Entry()
entry2.pack()

EDIT: лет 100 не писал на питоне — если есть ошибки, поправьте

→ Ссылка