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

_tkinter.TclError: invalid command name ".!entry"错误咨询与代码排查

Tkinter登录窗口用户名获取错误修复方案

问题根源

你遇到的_tkinter.TclError: invalid command name ".!entry"错误,是因为Logged_in函数里先销毁了登录窗口(log_on.destroy()),再去读取输入框user_name的内容。窗口销毁后,内部的Entry组件会被一并回收,此时调用get()自然找不到对应的组件。

另外,之前在创建窗口的函数里直接调用user_name.get()会立即读取空内容,是因为代码执行到该位置时窗口刚创建,你还没来得及输入内容——获取输入内容的逻辑本就该放在用户点击按钮之后执行。

修复后的代码

调整Logged_in函数的执行顺序,先获取用户名再销毁窗口:

def Logged_in():
    global User
    # 先读取输入框内容,再处理窗口销毁
    User = user_name.get().lower()
    print(User)
    log_on.destroy()
    log_on.quit()

# Log in window
def Log_on():
    global log_on, user_name
    log_on = Tk()
    log_on.geometry('400x300')
    log_on_label = Label(log_on, text="Log In", font=("Trebuchet MS", 18, "bold"))
    log_on_label.pack()
    # Username
    user_name_label = Label(log_on, text="Username:", font=("Trebuchet MS", 15))
    user_name_label.place(x=0, y=40)
    user_name = Entry(log_on, width=25,font=("Trebuchet MS", 15))
    user_name.place(x=100, y=40)
    log_in_btn = Button(log_on, text="Let's GO!", font=("Trebuchet MS", 16), command=Logged_in)
    log_in_btn.place(x=140, y=70)
    log_on.mainloop()  # 必须启动窗口主循环,否则窗口无法正常显示和响应事件

额外说明

  • 全局变量可适当精简,像log_on_label、user_name_label这类无需后续操作的组件,没必要声明为全局变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 03:15:15