Entry的验证

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()
原文地址:https://www.cnblogs.com/themost/p/6766966.html