计算器点击按钮后Textbox不更新问题求助
问题原因与解决方案
你的计算器文本框点击按钮后无更新,核心问题是add函数仅更新了全局变量calculation,却没有将新的内容插入到文本框中——你只执行了删除文本框内容的操作,漏掉了插入步骤。
修改后的完整代码
import tkinter calculation = "" def add(value): global calculation calculation += str(value) text_result.delete(1.0, "end") # 新增插入步骤,把更新后的calculation显示到文本框 text_result.insert(1.0, calculation) def evaluate(): global calculation try: calculation = str(eval(calculation)) text_result.delete(1.0, "end") text_result.insert(1.0, calculation) except: clear() text_result.insert(1.0, "ERROR") def clear(): global calculation calculation = "" text_result.delete(1.0, "end") root = tkinter.Tk() root.geometry("350x200") root.title("Simple Calculator") text_result = tkinter.Text(root, height=2, width=16, font=("Arial", 26)) text_result.grid(row=0, column=0, columnspan=5) btn1 = tkinter.Button(root, text="1", command=lambda: add(1), width=5, font=("Arial", 14)) btn2 = tkinter.Button(root, text="2", command=lambda: add(2), width=5, font=("Arial", 14)) btn3 = tkinter.Button(root, text="3", command=lambda: add(3), width=5, font=("Arial", 14)) btn4 = tkinter.Button(root, text="4", command=lambda: add(4), width=5, font=("Arial", 14)) btn5 = tkinter.Button(root, text="5", command=lambda: add(5), width=5, font=("Arial", 14)) btn6 = tkinter.Button(root, text="6", command=lambda: add(6), width=5, font=("Arial", 14)) btn7 = tkinter.Button(root, text="7", command=lambda: add(7), width=5, font=("Arial", 14)) btn8 = tkinter.Button(root, text="8", command=lambda: add(8), width=5, font=("Arial", 14)) btn9 = tkinter.Button(root, text="9", command=lambda: add(9), width=5, font=("Arial", 14)) btn0 = tkinter.Button(root, text="0", command=lambda: add(0), width=5, font=("Arial", 14)) btn_plus = tkinter.Button(root, text="+", command=lambda: add("+"), width=10, font=("Arial", 20)) btn_minus = tkinter.Button(root, text="-", command=lambda: add("-"), width=10, font=("Arial", 20)) btn_mul = tkinter.Button(root, text="x", command=lambda: add("*"), width=10, font=("Arial", 20)) btn_div = tkinter.Button(root, text="/", command=lambda: add("/"), width=10, font=("Arial", 20)) btn_clear = tkinter.Button(root, text="C", command=clear, width=5, font=("Arial", 14)) btn_eql = tkinter.Button(root, text="=", command=evaluate, width=5, font=("Arial", 14)) btn1.grid(row=2, column=1) btn2.grid(row=2, column=2) btn3.grid(row=2, column=3) btn4.grid(row=3, column=1) btn5.grid(row=3, column=2) btn6.grid(row=3, column=3) btn7.grid(row=4, column=1) btn8.grid(row=4, column=2) btn9.grid(row=4, column=3) btn0.grid(row=5, column=2) btn_plus.grid(row=2, column=4) btn_minus.grid(row=3, column=4) btn_mul.grid(row=4, column=4) btn_div.grid(row=5, column=4) btn_clear.grid(row=5, column=1) btn_eql.grid(row=5, column=3) root.mainloop()
关键修改说明
在add函数中添加了一行text_result.insert(1.0, calculation),作用是将每次更新后的计算表达式插入到文本框开头位置,这样点击数字或运算符按钮时,文本框就能实时显示当前输入的内容了。
内容的提问来源于stack exchange,提问作者Minahil Khawaja
相关产品推荐
相关产品推荐

