Как отобразить информацию одного поля 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 не писал на питоне — если есть ошибки, поправьте