【问题标题】:Button object not callable in the tkinter codetkinter 代码中不可调用的按钮对象
【发布时间】:2021-02-09 09:18:24
【问题描述】:
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()

这是我的 tkinter 代码,我在 Python 中创建了一个计算器,如果我点击任何按钮,我就会遇到这个错误

button_8=Button(root,text="8",padx=40,pady=20,command=lambda: button_add(8)) TypeError: 'Button' object is not callable

请有人帮忙,我应该如何解决这个问题?

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    仔细观察,你会发现你的函数和添加按钮变量有相同的名称,因此 python 很困惑该调用哪个,所以只需更改函数名称或按钮名称。

    add_button = Button(root,text='+',padx=39,pady=20)
    add_button.grid(row=4,column=0)
    

    另外,我知道代码仍然不完整,但请记住这一点,每次单击数字按钮时,数字将显示在条目小部件的开头,要摆脱这种情况,请说:

    def button_add(number): 
        entry.insert(END,number) #END will always add the number to the end, rather than 0th postion like before
    

    我现在告诉这个,因为我认为你要避免这种情况的下一步是:

    def button_add(number):
        e = entry.get()
        entry.delete(0,END)
        entry.insert(0,e+str(number))
    

    这根本没有必要,因为你有一个内置的END tkinter 变量。

    【讨论】:

    • @AaditS.Bagga 希望标记为正确答案
    猜你喜欢
    • 2015-02-21
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    相关资源
    最近更新 更多