如何在Tkinter按钮函数中传递Entry组件值至onConfirm()函数
如何在Tkinter按钮点击函数中,将Entry组件的输入值传递给自定义的onConfirm()函数?
其实这个需求实现起来很直观,核心是用lambda表达式作为按钮的回调桥梁,让你能在点击按钮时动态获取Entry的输入内容,再传递给你的自定义函数。下面是完整的示例实现:
关键思路拆解
- 先创建好Entry组件,确保它的作用域能被按钮的回调访问到(示例中我们在类的
__init__方法里创建了firstNameText这个Entry实例) - 给Button的
command参数绑定一个lambda表达式:lambda: self.onConfirm(firstNameText.get())。lambda在这里就像一个临时的小函数,点击按钮时会先调用firstNameText.get()拿到输入框里的内容,再把这个内容作为参数传给onConfirm - 最后实现
onConfirm函数,接收传入的参数并做你需要的处理(示例里用messagebox弹窗展示输入的内容)
完整示例代码
from tkinter import Tk, ttk, Frame, Button, Label, Entry, Text, Checkbutton, \ Scale, Listbox, Menu, BOTH, RIGHT, RAISED, N, E, S, W, \ HORIZONTAL, END, FALSE, IntVar, StringVar, messagebox as box class Example(Frame): def __init__(self, parent): Frame.__init__(self, parent, background="skyblue") self.parent = parent self.parent.title("Simple Window") self.style = ttk.Style() self.style.theme_use("default") self.centreWindow() self.pack(fill=BOTH, expand=1) # 创建标签和输入框 firstNameLabel = Label(self, text="First Name") firstNameLabel.grid(row=0, column=0, padx=(100,10), pady=(100,10)) firstNameText = Entry(self, width=20) firstNameText.grid(row=0, column=1, pady=(100,10)) # 绑定按钮点击事件,用lambda传递输入值 okBtn = Button(self, text="OK", width=10, command=lambda: self.onConfirm(firstNameText.get())) okBtn.grid(row=0, column=2,padx = 5, pady=(100,10)) def centreWindow(self): w = 500 h = 300 sw = self.parent.winfo_screenwidth() sh = self.parent.winfo_screenheight() x = (sw - w)/2 y = (sh - h)/2 self.parent.geometry('%dx%d+%d+%d' % (w, h, x, y)) def onConfirm(self,s): # 接收传递过来的输入值并展示 box.showinfo("Information", s) def main(): root = Tk() root.resizable(width=FALSE, height=FALSE) app = Example(root) root.mainloop() if __name__ == '__main__': main()
运行这段代码后,你在输入框里输入内容,点击OK按钮,就能看到弹窗显示你输入的名字了。
内容的提问来源于stack exchange,提问作者salesforce-coder
相关产品推荐
相关产品推荐

