You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

计算器点击按钮后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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 01:52:32