Итак, я пытаюсь создать что-то вроде инструмента преобразования единиц измерения Гул Пока у меня есть это:
import tkinter
rate = 3.281
def command_P():
print("button pressed")
def callback1(arg):
try:
float(amount1.get())
amount2.delete(0,"end")
amount2.insert(0,float(amount1.get())*rate)
except Exception as e:
print(e)
def callback2(arg):
try:
float(amount2.get())
amount1.delete(0,"end")
amount1.insert(0,float(amount2.get())/rate)
except Exception as e:
print(e)
trade_w = tkinter.Tk()
trade_w.title("Unit Converter")
label_mont1 = tkinter.Label(trade_w,
text = "Metre:")
label_mont1.grid(column=0, row=1)
sv = tkinter.StringVar()
sv.trace("w", lambda name, index, mode, sv=sv: callback1(sv))
amount1 = tkinter.Entry(trade_w,textvariable=sv)
amount1.grid(column=1, row=1)
label_mont2 = tkinter.Label(trade_w,
text = "Foot:")
label_mont2.grid(column=2, row=1)
vs = tkinter.StringVar()
vs.trace("w", lambda name, index, mode, vs=vs: callback2(vs))
amount2 = tkinter.Entry(trade_w, textvariable=vs)
amount2.grid(column=3, row=1)
trade_w.mainloop()
Кажется, все работает нормально, но когда я пишу что-то на любом Это поле перемещает текстовый курсор в конец поля ввода, то есть, когда я выполняю .get () для amount1 или amount2, он выполняет функцию обратного вызова и пересчитывает значение.
Любая идея, как обойти или решить это?
Спасибо!