Objet Button non appelable dans le code tkinter
from tkinter import *
root=Tk()
# not required here root.geometry()
root.title("calculator")
entry=Entry(root,width=50,borderwidth=5)
entry.grid(row=0,column=0,columnspan=3,padx=10,pady=10)
def button_add(number):
entry.insert(0,number)
def clear():
entry.delete(0,END)
button_1=Button(root,text="1",padx=40,pady=20,command=lambda: button_add(1))
button_2=Button(root,text="2",padx=40,pady=20,command=lambda: button_add(2))
button_3=Button(root,text="3",padx=40,pady=20,command=lambda: button_add(3))
button_4=Button(root,text="4",padx=40,pady=20,command=lambda: button_add(4))
button_5=Button(root,text="5",padx=40,pady=20,command=lambda: button_add(5))
button_6=Button(root,text="6",padx=40,pady=20,command=lambda: button_add(6))
button_7=Button(root,text="7",padx=40,pady=20,command=lambda: button_add(7))
button_8=Button(root,text="8",padx=40,pady=20,command=lambda: button_add(8))
button_9=Button(root,text="9",padx=40,pady=20,command=lambda: button_add(9))
button_0=Button(root,text="0",padx=40,pady=20,command=lambda: button_add(0))
button_add=Button(root,text='+',padx=39,pady=20)
button_equal=Button(root,text='=',padx=95,pady=20)
def clear():
entry.delete(0,END)
button_clear=Button(root,text='clear',padx=141.5,pady=10,command=clear)
# grid being set
button_1.grid(row=1,column=0)
button_2.grid(row=1,column=1)
button_3.grid(row=1,column=2)
button_4.grid(row=2,column=0)
button_5.grid(row=2,column=1)
button_6.grid(row=2,column=2)
button_7.grid(row=3,column=0)
button_8.grid(row=3,column=1)
button_9.grid(row=3,column=2)
button_add.grid(row=4,column=0)
button_equal.grid(row=4,column=1,columnspan=2)
button_clear.grid(row=5, column=0,columnspan=4)
root.mainloop()
Ceci est mon code tkinter, je créais une calculatrice en Python et je suis tombé sur cette erreur, si j'ai cliqué sur un bouton
button_8 = Button (root, text = "8", padx = 40, pady = 20, command = lambda: button_add (8)) TypeError: l'objet 'Button' n'est pas appelable
S'il vous plaît, quelqu'un aide comment dois-je résoudre ce problème?
Réponses
Regardez de plus près et vous remarquerez que votre fonction et la variable de bouton d'ajout ont le même nom, et par conséquent, python ne sait pas lequel appeler, alors changez simplement le nom de la fonction ou le nom du bouton.
add_button = Button(root,text='+',padx=39,pady=20)
add_button.grid(row=4,column=0)
De plus, je sais que le code est toujours incomplet, mais gardez cela à l'esprit, chaque fois que vous cliquez sur le bouton numérique, le numéro sera affiché vers le début du widget d'entrée, pour vous en débarrasser, dites:
def button_add(number):
entry.insert(END,number) #END will always add the number to the end, rather than 0th postion like before
Je le dis maintenant, car je pense que la prochaine étape que vous allez faire pour éviter cela est:
def button_add(number):
e = entry.get()
entry.delete(0,END)
entry.insert(0,e+str(number))
Ce n'est pas du tout nécessaire puisque vous avez une ENDvariable intégrée avec tkinter.