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

如何将Tkinter计算器Entry框中的运算内容传入Text文本框?

解决Tkinter计算器运算式传递到Text框的问题

你的代码核心问题是没有在计算完成后将输入的运算式写入Text组件。只需修改equal()函数,同时获取运算式和计算结果,再将其插入到Text框中即可。

修改后的完整代码

import tkinter as tk
import tkinter.messagebox
from tkinter.constants import SUNKEN

window=tk.Tk()
window.title('Calculator')
frame=tk.Frame(master=window,bg="PaleGreen",padx=10)
frame.pack()
frame2 = tk.Frame(master = window,padx = 10)
frame2.pack()
entry=tk.Entry(master=frame,relief=SUNKEN,borderwidth=3,width=30)
entry.grid(row=0,column=0,columnspan=3,ipady=2,pady=2)

def click(number):
    entry.insert(tk.END,number)

def equal():
    try:
        expr = entry.get()  # 获取输入的运算式
        y = str(eval(expr))
        # 将运算式和结果格式化后插入Text框,每行一条记录
        TextB.insert(tk.END, f"{expr} = {y}\n")
        entry.delete(0,tk.END)
        entry.insert(0,y)
    except:
        tkinter.messagebox.showinfo("Warning!","Syntax Error")

def clear():
    entry.delete(0,tk.END)
    # 可选:清空Text框的内容
    # TextB.delete(1.0, tk.END)

result_label = tk.Label(text="Eredmény:",fg="green",bg="yellow")
result_label.pack()

# 给Text框设置合适的高度和宽度,优化显示
TextB = tk.Text(master=frame2, height=6, width=30)
TextB.pack()

# 以下按钮代码保持不变
button_1=tk.Button(master=frame,text='1',padx=15,pady=5,width=3,command=lambda:click(1))
button_1.grid(row=3,column=0,pady=2)
button_2=tk.Button(master=frame,text='2',padx=15,pady=5,width=3,command=lambda:click(2))
button_2.grid(row=3,column=1,pady=2)
button_3=tk.Button(master=frame,text='3',padx=15,pady=5,width=3,command=lambda:click(3))
button_3.grid(row=3,column=2,pady=2)
button_4=tk.Button(master=frame,text='4',padx=15,pady=5,width=3,command=lambda:click(4))
button_4.grid(row=4,column=0,pady=2)
button_5=tk.Button(master=frame,text='5',padx=15,pady=5,width=3,command=lambda:click(5))
button_5.grid(row=4,column=1,pady=2)
button_6=tk.Button(master=frame,text='6',padx=15,pady=5,width=3,command=lambda:click(6))
button_6.grid(row=4,column=2,pady=2)
button_7=tk.Button(master=frame,text='7',padx=15,pady=5,width=3,command=lambda:click(7))
button_7.grid(row=5,column=0,pady=2)
button_8=tk.Button(master=frame,text='8',padx=15,pady=5,width=3,command=lambda:click(8))
button_8.grid(row=5,column=1,pady=2)
button_9=tk.Button(master=frame,text='9',padx=15,pady=5,width=3,command=lambda:click(9))
button_9.grid(row=5,column=2,pady=2)  
button_0=tk.Button(master=frame,text='0',padx=15,pady=5,width=3,command=lambda:click(0))
button_0.grid(row=6,column=0,pady=2)

button_add=tk.Button(master=frame,text="+",padx=15,pady=5,width=3,command=lambda:click('+'))
button_add.grid(row=1,column=0,pady=2)

button_subtract=tk.Button(master=frame,text="-",padx=15,pady=5,width=3,command=lambda:click('-'))
button_subtract.grid(row=1,column=1,pady=2)

button_multiply=tk.Button(master=frame,text="*",padx=15,pady=5,width=3,command=lambda:click('*'))
button_multiply.grid(row=1,column=2,pady=2)

button_div=tk.Button(master=frame,text="/",padx=15,pady=5,width=3,command=lambda:click('/'))
button_div.grid(row=2,column=0,pady=2)

btnC=tk.Button(master=frame,text="clear",padx=15,pady=5,width=12,command=clear)
btnC.grid(row=2,column=1,columnspan=2,pady=2)

button_equal=tk.Button(master=frame,text="=",padx=15,pady=5,width=9,command=equal)
button_equal.grid(row=6,column=1,columnspan=3,pady=2)

window.mainloop()

关键修改点

  1. 获取运算式并写入Text框:在equal()函数中,先通过expr = entry.get()获取输入的运算式,再用TextB.insert(tk.END, f"{expr} = {y}\n")将运算式和结果格式化后插入Text框,每行一条记录便于查看。
  2. 优化Text框显示:给Text组件添加height和width参数,避免默认过小的显示区域。
  3. 可选功能:如果需要点击clear按钮时清空Text框,可以取消clear()函数中注释的TextB.delete(1.0, tk.END)代码。

内容的提问来源于stack exchange,提问作者user21041924

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:17:05