Tkinter中Entry值与同内容字符串比较为False的原因
问题成因
直接将Entry控件实例与字符串做相等判断是逻辑错误:ent_pro_val4是Entry类的实例化对象,不是输入框内的文本内容,对象和字符串属于完全不同的数据类型,无论输入什么内容,两者比较的结果永远为False。
Entry控件不会自动把输入内容赋值给控件变量本身,要获取输入的实际文本,必须调用控件内置的get()方法取值后再做比较。
错误点定位
原判断逻辑:
tru = (ent_pro_val4=='TEST123')
此处比较的两个值分别是Entry控件对象和字符串常量'TEST123',类型不匹配,不可能得到True的结果。
修正后可运行代码
from tkinter import * import tkinter.ttk as ttk root = Tk() root.title("TEST ") lab_pro_val4=Label(root, text="Anything input", width=30, height=1 ) lab_pro_val4.pack() ent_pro_val4 = Entry(root) ent_pro_val4.pack() def btncmd4_add(): # 调用get()方法获取输入框内的实际文本,再做相等判断 input_text = ent_pro_val4.get() tru = (input_text == 'TEST123') print(tru) btn4_ppid = Button(root, text="Check ", command=btncmd4_add, bg="white") btn4_ppid.pack() root.mainloop()
额外注意
- Tkinter所有输入类控件都不能直接用控件对象代替输入内容做判断:
- 单行输入框Entry:通过
控件对象.get()获取全量输入文本 - 多行文本框Text:通过
控件对象.get("1.0", END)获取从第一行首位到输入末尾的全部内容
- 单行输入框Entry:通过
- 如果需要做实时输入校验,可以搭配
StringVar做值绑定,通过绑定变量的get()方法也能拿到实时输入内容。
内容的提问来源于stack exchange,提问作者help me
相关产品推荐
相关产品推荐

