Python Tkinter计算器求和异常:数值拼接而非累加问题求助
问题修复方案
核心问题说明
- 每次调用加减函数时,都将累加基数
total重置为0,没有读取总额输入框中已有的历史计算结果 - 向总额输入框写入值时使用了
insert()方法,该方法只会在指定位置插入新内容,不会覆盖原有内容,两次插入的数值就会出现拼接效果
修复后完整代码
import tkinter.messagebox from tkinter import * from tkinter import messagebox import tkinter as tk window = Tk() window.title("Calculator") window.geometry("300x100") # 总额标签 labelT = Label(text="Total: ") labelT.grid() # 总额输入框 tBox = Entry() tBox.grid(column=1, row=0) tBox.configure(state='disabled') # 数值输入框 numBox = Entry(window) numBox.grid(column=1, row=1) def sum(): # 读取已有总额,无历史值则默认0 try: total = int(tBox.get()) if tBox.get() else 0 except: total = 0 try: num = int(numBox.get()) except: tk.messagebox.showwarning(title='Warning', message="请输入合法数字") numBox.delete(0, tk.END) else: tBox.configure(state='normal') total += num # 先清空原有内容再插入新结果,避免数值拼接 tBox.delete(0, tk.END) tBox.insert(0, total) tBox.configure(state='disabled') # 自动清空输入框方便下一次操作 numBox.delete(0, tk.END) def subtract(): # 读取已有总额,无历史值则默认0 try: total = int(tBox.get()) if tBox.get() else 0 except: total = 0 try: num = int(numBox.get()) except: tk.messagebox.showwarning(title='Warning', message="请输入合法数字") numBox.delete(0, tk.END) else: tBox.configure(state='normal') total -= num # 先清空原有内容再插入新结果,避免数值拼接 tBox.delete(0, tk.END) tBox.insert(0, total) tBox.configure(state='disabled') # 自动清空输入框方便下一次操作 numBox.delete(0, tk.END) btn1 = Button(text="+", command=sum) btn1.grid(column=0, row=2) btn2 = Button(text="-", command=subtract) btn2.grid(column=1, row=2) window.mainloop()
优化说明
新增了计算完成后自动清空数值输入框的逻辑,无需用户手动删除上次输入的内容,操作更顺畅。
内容的提问来源于stack exchange,提问作者Hdhdh Hdhd
相关产品推荐
相关产品推荐

