如何在Tkinter中按下回车键后获取输入并销毁输入框
Tkinter实现回车触发输入框内容获取并销毁控件
我日常使用C语言开发,刚接触Tkinter。我想实现按下回车键后,将输入框的内容存入name变量,同时销毁该输入框(使用destroy()方法),以下是我的代码及尝试的实现:
原代码
import tkinter as tk from tkinter import * root = tk.Tk() root.title = 'Shit game v1.0' root.geometry('600x400+50+50') label = tk.Label(text = "Name?: " ,foreground = "green", background = "black") entry = tk.Entry(root, fg="green", bg="black", width=50) label.pack() entry.pack() #name = entry.get() # place a label on the root window message = tk.Label(root, text= "What is your name?", foreground = "green", background = "black", width = 1000, height = 1000) message.pack() if entry == True: name = entry.get() message2 = tk.Label(root, text= f"Welcome {name}! Let's begin!", foreground = "green", background = "black", width = 1000, height = 1000) message2.pack() root.mainloop()
尝试的代码
def get_name(event): name = entry.get() if entry == True: name = entry.get() message2 = tk.Label(root, text= f"Welcome {name}! Let's begin!", foreground = "green", background = "black", width = 1000, height = 1000) message2.pack() entry.bind('<Return>', get_name)
问题分析与解决方案
你的代码存在几个关键问题:
if entry == True逻辑无效:entry是Tkinter的Entry控件对象,永远不会等于布尔值True,这个判断完全不成立。- 尝试的代码中
get_name函数仅获取输入内容,未实现销毁输入框和显示欢迎信息的核心逻辑。 - 事件绑定后,函数需要完整执行所有预期操作。
以下是修正后的完整代码:
import tkinter as tk root = tk.Tk() root.title = 'Shit game v1.0' root.geometry('600x400+50+50') # 全局变量存储用户名 name = "" def get_name(event): global name # 获取输入框内容 name = entry.get() # 销毁输入框和提示标签 entry.destroy() label.destroy() # 销毁原来的提示消息 message.destroy() # 创建并显示欢迎标签 message2 = tk.Label(root, text=f"Welcome {name}! Let's begin!", foreground="green", background="black") message2.pack(fill="both", expand=True) label = tk.Label(text="Name?: ", foreground="green", background="black") entry = tk.Entry(root, fg="green", bg="black", width=50) label.pack() entry.pack() message = tk.Label(root, text="What is your name?", foreground="green", background="black") message.pack(fill="both", expand=True) # 绑定回车键到get_name函数 entry.bind('<Return>', get_name) root.mainloop()
关键改动说明:
- 使用
global关键字让函数能修改全局变量name,确保输入内容可以在函数外访问。 - 在
get_name函数中调用destroy()方法销毁输入框、提示标签和原提示消息。 - 调整欢迎标签的布局参数
fill="both", expand=True,让标签自动填充窗口剩余空间,替代固定宽高的不合理设置。 - 移除冗余的
from tkinter import *导入,保持代码简洁规范。
内容的提问来源于stack exchange,提问作者primeCEOstack
相关产品推荐
相关产品推荐

