Python Tkinter计算器backspace与clear按钮触发TypeError报错求解
错误根源
你定义的clear()和backspace()函数没有设置入参,但你在绑定按钮回调时,通过lambda:clear('CE')和lambda:backspace('<-')主动传入了1个参数,参数数量不匹配就触发了类型报错。
修复方案(二选一即可)
方案1:修改按钮的回调绑定逻辑
这两个函数本身不需要接收外部参数,直接去掉lambda里传入的冗余参数即可,修改calculatorBoard()函数里的对应行:
# 原错误写法 # bClear=Button(root,text='CE',width=5,command=lambda:clear('CE')) # bBackspace=Button(root,text='<-',width=5,command=lambda:backspace('<-')) # 修改为如下内容 bClear=Button(root,text='CE',width=5,command=clear) bBackspace=Button(root,text='<-',width=5,command=backspace)
没有参数需要传递的情况下,直接把函数名赋值给command参数即可,不需要额外套lambda。
方案2:修改函数定义,增加占位参数
如果你需要保留回调传参的写法,可以给两个函数增加不使用的占位参数即可:
# 原错误定义 # def clear(): # def backspace(): # 修改为如下内容 def clear(dummy): e.delete(0, END) return def backspace(dummy): current = e.get() lenght = len(current)-1 e.delete(lenght, END)
额外代码优化提示
你代码中数字4按钮的文本写为了'1',会导致点击后显示1而不是4,建议修改:
# 原错误写法 # b4=Button(root,text='1',width=5,command=lambda:addEntry(4)) # 修改为如下内容 b4=Button(root,text='4',width=5,command=lambda:addEntry(4))
内容的提问来源于stack exchange,提问作者StarAnis
相关产品推荐
相关产品推荐

