Tkinter中计算Entry输入框列表数值总和触发TypeError如何解决
Tkinter多Entry输入框数字求和报错解决方案
核心错误原因
你存储在entries列表中的是Tkinter的Entry控件实例对象,不是输入框内的文本内容,直接传入int()进行类型转换不符合参数要求,因此触发类型错误。
其他存在的逻辑问题
- 求和变量未初始化,首次调用计算方法时会触发未定义报错
- 你在创建
e1输入框时直接调用grid()方法并赋值,grid()方法返回值为None,后续调用e1.insert()写入结果时会触发NoneType无insert属性的报错 - 每次计算前没有清空结果输入框的旧值,会导致多次计算的结果拼接在一起
- 未做非数字输入的容错处理,输入框留空或填写非数字内容时会触发转换报错
修正后可运行的完整代码
from tkinter import * window = Tk() window.title("card") window.geometry('1500x100') entries = [] def total(): sum_val = 0 for entry in entries: # 先调用get()方法获取输入框内的文本内容 input_text = entry.get().strip() # 容错处理:只累加合法数字 if input_text.isdigit(): sum_val += int(input_text) # 先清空结果框再写入新结果 e1.delete(0, END) e1.insert(0, sum_val) for i in range(10): en = Entry(window) en.grid(row=1, column=0+i) entries.append(en) b1 = Button(window, text="计算总和", command=total) b1.grid(row=7, column=1) # 控件创建和布局分开写,避免变量被赋值为None e1 = Entry(window) e1.grid(row=20, column=2) window.mainloop()
内容的提问来源于stack exchange,提问作者AnaniasOD
相关产品推荐
相关产品推荐

