Erreur tkinter

Fermé
sayyylen - Modifié le 15 févr. 2020 à 17:55
 trifou - 15 févr. 2020 à 19:32
Bonjour,

Voici mon code, il marche mais à chaque fois que j'écrit dans les zones de texte ça me renvoi cette erreur:
Quelqu'un peu m'aider?

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\Erwan\Anaconda3\lib\tkinter\__init__.py", [/download/telecharger-34098305-line line] 1705, in __call__
    return self.func(*args)
  File "C:/Users/Erwan/Documents/_developement/_python/-tkinter/tkinter_10.py", line 5, in addition
    label_var.set(entry_var.get() +  entry1_var.get())
  File "C:\Users\Erwan\Anaconda3\lib\tkinter\__init__.py", line 529, in get
    return self._tk.getdouble(self._tk.globalgetvar(self._name))
_tkinter.TclError: expected floating-point number but got ""


import tkinter

#----------------------def____--------------------------------------
def addition(*argms):
    label_var.set(entry_var.get() +  entry1_var.get())

def plus_n():
    a = label_var.get()
    b = entry1_var.get()
    c = (a + b)
    print (c)
    label_var.set(c)

def multiplication(*argms):
    label_multi_var.set(multip_var.get() * multip1_var.get())

def fois_n():
    d = label_multi_var.get()
    e = multip1_var.get()
    f = (d * e)
    print (f)
    label_multi_var.set(f)



#----------------------root.tkinter-----------------------------------
root = tkinter.Tk()
root.geometry("600x200")
root.minsize(200, 150)
root.maxsize(1280, 720)
root.title("Projet calcul")

#-----------------------addition--------------------------------------
label_add = tkinter.Label(root, text="    Addition    ")

entry_var = tkinter.DoubleVar()
entry_var.trace("w", addition)
entry = tkinter.Entry(root, textvariable=entry_var)

entry1_var = tkinter.DoubleVar()
entry1_var.trace("w", addition)
entry1 = tkinter.Entry(root, textvariable=entry1_var)

signe = tkinter.Label(root, text="+")

button = tkinter.Button(root, text="+x", background="blue", foreground="white",activebackground="white",activeforeground="black",
command = plus_n)


mainframe = tkinter.LabelFrame(root, height=50)

label_var = tkinter.DoubleVar()
label_result = tkinter.Label(mainframe, textvariable=label_var)



label_add.grid(row=0, column=0)
entry.grid(row=0, column=1)
signe.grid(row=0, column=2)
entry1.grid(row=0, column=3)
mainframe.grid(row=0, column=4)
label_result.grid()
button.grid(row=0, column=5)


#----------------------------multiplication---------------------------------
label_multi = tkinter.Label(root, text="    Multiplication    ")

multip_var = tkinter.DoubleVar()
multip_var.trace("w", multiplication)
multi = tkinter.Entry(root, textvariable=multip_var)

signe = tkinter.Label(root, text="x")

multip1_var = tkinter.DoubleVar()
multip1_var.trace("w", multiplication)
multi1 = tkinter.Entry(root, textvariable=multip1_var)

mainframe_multi = tkinter.LabelFrame(root, height=50)

label_multi_var = tkinter.DoubleVar()
label_multi_result = tkinter.Label(mainframe_multi, textvariable=label_multi_var)

button1 = tkinter.Button(root, text="*x", background="blue", foreground="white",activebackground="white",activeforeground="black",
command = fois_n)



label_multi.grid(row=1, column=0)
multi.grid(row=1, column=1)
signe.grid(row=1, column=2)
multi1.grid(row=1, column=3)
mainframe_multi.grid(row=1, column=4)
label_multi_result.grid()
button1.grid(row=1, column=5)

#-----------------------end------------------------------------------------
button_quit = tkinter.Button(root, text="Quit", command=root.destroy, background="red", foreground="white", activebackground="white",activeforeground="black")
button_quit.grid(sticky="s")
root.mainloop()




Configuration: Windows / Chrome 79.0.3945.130

1 réponse

Bonjour,

Cela renvoi une erreur si la valeur saisie n'est pas un float, si tu supprimes tous caractères de l' entry, ça fera ce genre d'erreur, et comme il n'est pas envisageable de ne pas pouvoir effacer le champ pour y inscrire une autre valeur, alors autant choper l'erreur.

def multiplication(*argms):
    try:
        label_multi_var.set(multip_var.get() * multip1_var.get())
    except tkinter.TclError:
        pass


Faire de même avec ta fonction d'addition.