Плавающие ошибки при использовании Trace - PullRequest
0 голосов
/ 15 апреля 2020

Я изменил фрагмент кода, который нашел здесь, и по большей части он работает, но предупреждения продолжают появляться. Он ожидает число с плавающей точкой, но получил "", и я не знаю, почему это происходит. Я думал, что целые числа могут быть выражены как плавающее число. Ошибка исчезнет, ​​как только будет введен второй номер. если я просто набираю «1», я получаю предупреждение, но как только я набираю «10», предупреждение перестает появляться. Это немного раздражает, потому что у меня около 2000 строк кода, и мне нужно видеть реальные ошибки. enter image description here

import tkinter as tk

root = tk.Tk()
def back(var1,var2):
    b=var1.get()+var2.get()
    print(var1.get())
    print(var2.get())
    a.set(b)


var1 = tk.DoubleVar()
var2 = tk.DoubleVar()
a=     tk.DoubleVar()

E1= tk.Entry(root, textvariable=var1)
E1.pack()
E2= tk.Entry(root, textvariable=var2)
E2.pack()
var1.trace('w',lambda name, index, mode, var1=var1: back(var1,var2))
var2.trace('w',lambda name, index, mode, var2=var2: back(var1,var2))
l=tk.Label(root, textvariable=a)
l.pack()

root.mainloop()

enter image description here

1 Ответ

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

Используйте try / except, чтобы перехватить исключение и сделать все, что вы хотите в блоке except:

def back(var1, var2):
    try:
        a.set(var1.get() + var2.get())
    except (ValueError, tk.TclError):
        # do whatever you want, or
        a.set('invalid value')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...