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

如何在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)

问题分析与解决方案

你的代码存在几个关键问题:

  1. if entry == True逻辑无效:entry是Tkinter的Entry控件对象,永远不会等于布尔值True,这个判断完全不成立。
  2. 尝试的代码中get_name函数仅获取输入内容,未实现销毁输入框和显示欢迎信息的核心逻辑。
  3. 事件绑定后,函数需要完整执行所有预期操作。

以下是修正后的完整代码:

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 16:04:56