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

Tkinter中如何获取Entry组件输入并与指定字符串做比对

核心错误点

代码存在3处会导致功能失效的问题:

  • Tkinter组件的pack()/grid()/place()布局方法返回值固定为None,entry1 = Entry(window, width=30).pack()写法会让entry1变量值为None,无法持有Entry组件实例,自然无法调用get()方法。所有需要后续操作的组件,必须分开写创建、布局逻辑。
  • 比对逻辑直接拿组件对象和字符串做判断,没有调用get()方法读取Entry内的实际输入文本。
  • 点击按钮时直接pack()结果标签,没有提前移除已显示的标签,多次点击后两个标签会在界面堆叠。
修正后可运行代码
from tkinter import *

window = Tk()
window.geometry("800x600")
window.title("Sara's chocolate balls")

def Button_Click():
    # 每次判断前先隐藏两个结果标签,避免组件堆叠
    test2.pack_forget()
    test3.pack_forget()
    target_text = "hey"
    # 读取Entry输入内容后再做比对
    user_input = entry1.get()
    test2.pack() if user_input == target_text else test3.pack()

# 先创建组件赋值给变量,再单独执行布局操作
entry1 = Entry(window, width=30)
entry1.pack()

Button1 = Button(window, text="Button", command=Button_Click)
Button1.pack()

test2 = Label(window, text="Good")
test3 = Label(window, text="Bad")

window.mainloop()
关键注意事项
  • 只要后续需要读取、修改组件属性/内容,就不能在创建组件时链式调用布局方法直接赋值,必须将组件实例赋值给变量后,单独调用布局方法。
  • Entry组件的输入内容为字符串类型,通过组件实例.get()即可获取,可直接与预定义的字符串做等值判断。
  • 若需要切换同位置显示的组件,可通过pack_forget()/grid_forget()方法临时隐藏不需要显示的组件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:54:16