Tkinter如何实现点击按钮弹窗显示Entry输入框内容
Tkinter计算器输入框内容输出实现方案
核心逻辑:通过Entry控件的get()方法即可获取输入框内的文本内容,拿到内容后可选择弹窗展示或窗口内标签展示两种输出方式。
前置说明
如果需要用消息框弹窗展示内容,要先在文件头部导入messagebox模块:
from tkinter import messagebox
原代码设置的窗口尺寸100x50过小,控件会被挤压显示不全,建议调整为260x380适配所有按钮。
两种输出实现方式
- 方式1:消息弹窗展示
提交按钮直接绑定lambda逻辑,获取输入内容后调用messagebox弹窗即可,不需要额外新增控件:Button(master, text="Submit",width=23, height=3, command=lambda: messagebox.showinfo("提交结果", f"输入内容:{self.e.get()}") ).grid(row=5, column=0, columnspan=3) - 方式2:窗口内Label标签展示
先在__init__方法中初始化一个用来展示结果的Label控件,放在窗口合适位置,提交按钮触发时更新Label的文本属性即可:- 在输入框初始化代码下方添加Label定义:
self.result_label = ttk.Label(master, text="", foreground="red") self.result_label.grid(row=7, column=0, columnspan=3, pady=10)- 提交按钮绑定更新标签的逻辑:
Button(master, text="Submit",width=23, height=3, command=lambda: self.result_label.config(text=f"输入内容:{self.e.get()}") ).grid(row=5, column=0, columnspan=3)
修改后完整可运行代码
以下代码整合了两种展示逻辑,可注释掉不需要的展示方式:
from tkinter import * from tkinter import ttk from tkinter import messagebox import tkinter as tk root = tk.Tk() class sweltres: def clearall(self): self.e.delete(0,END) def clear1(self): self.txt=self.e.get()[:-1] self.e.delete(0,END) self.e.insert(0,self.txt) def action(self,argi): self.e.insert(END,argi) def submit_handle(self): input_content = self.e.get() # 弹窗展示,不需要可注释 messagebox.showinfo("提交成功", f"你输入的内容是:{input_content}") # 标签展示,不需要可注释 self.result_label.config(text=f"当前输入:{input_content}") def __init__(self,master): master.title('Calculator') master.geometry("260x380") self.e = ttk.Entry(master) self.e.grid(row=0,column=0,columnspan=6,pady=3) self.e.focus_set() # 结果展示标签 self.result_label = ttk.Label(master, text="", foreground="darkblue") self.result_label.grid(row=7, column=0, columnspan=3, pady=10) Button(master,text='AC',width=5,height=3, fg="black", bg="blue", command=lambda:self.clearall()).grid(row=4, column=2) Button(master,text='C',width=5,height=3, fg="red",bg="blue", command=lambda:self.clear1()).grid(row=4, column=0) Button(master,text="7",width=5,height=3, fg="white",bg="blue", command=lambda:self.action('7')).grid(row=1, column=0) Button(master,text="8",width=5,height=3, fg="white",bg="blue", command=lambda:self.action(8)).grid(row=1, column=1) Button(master,text="9",width=5,height=3, fg="white",bg="blue", command=lambda:self.action(9)).grid(row=1, column=2) Button(master,text="4",width=5,height=3, fg="white",bg="blue", command=lambda:self.action(4)).grid(row=2, column=0) Button(master,text="5",width=5,height=3, fg="white",bg="blue", command=lambda:self.action(5)).grid(row=2, column=1) Button(master,text="6",width=5,height=3, fg="white",bg="blue", command=lambda:self.action(6)).grid(row=2, column=2) Button(master,text="1",width=5,height=3, fg="white",bg="blue", command=lambda:self.action(1)).grid(row=3, column=0) Button(master,text="2",width=5,height=3, fg="white",bg="blue", command=lambda:self.action(2)).grid(row=3, column=1) Button(master,text="3",width=5,height=3, fg="white",bg="blue", command=lambda:self.action(3)).grid(row=3, column=2) Button(master,text="0",width=5,height=3, fg="white",bg="blue", command=lambda:self.action(0)).grid(row=4, column=1) # 提交按钮 Button(master, text="Submit",width=23, height=3, fg="white",bg="green", command=self.submit_handle).grid(row=5, column=0, columnspan=3) Button(master, text="Exit wtf",width=23,height=3, fg="white",bg="red", command=master.destroy).grid(row=6, column=0, columnspan=3) sweltres(root) root.mainloop()
内容的提问来源于stack exchange,提问作者Drako Buldisa
相关产品推荐
相关产品推荐

