Entry组件是支持验证输入的合法性的,
比如要求输入数字,你输入了字母就是非法。
实现该功能,需要通过设置validate,validatecommand,invalidcommand选项。
1、首先,启用验证开关validate,可以设置为:
'focus':组件获得或者失去焦点时验证
'focusin':组件获得焦点时验证
'focusout':组件失去焦点时验证
'key':输入框被编辑的时候验证
'all':当出现上面任意一种情况时验证
'none':关闭验证功能,默认是这个,注意不是逻辑的None,首字母小写。
2、其次,为validatecommand选项验证函数,函数只能返回True或者False。
3、然后,invalidcommand选项指定的函数只有validatecommand函数返回为False时才会触发。
举例如下:
1 #在第一个输入框输入小王并通过tab键将焦点转移到第二个输入框的时候,验证功能被成功触发。 2 from tkinter import * 3 4 master= Tk() 5 def makesure(): 6 if e1.get()=='小王': 7 print('哈喽,恭喜恭喜!') 8 return True 9 else: 10 print('我晕,你是谁?!') 11 e1.delete(0,END)#输入错误时,删除错误文本 12 return False 13 def sb(): 14 print('sb!') 15 16 e1 = Entry(master,validate='focusout', 17 validatecommand=makesure,invalidcommand=sb) 18 e1.pack(padx=10,pady=10) 19 20 e2 = Entry(master,show='*') 21 e2.pack(padx=10,pady=10) 22 23 mainloop()