Tkinter .Entry控件在选中内容或者在验证函数中编辑条目小部件时,条目小部件会自动将validate
选项重置为“none”,即验证功能失效。
需要重置验证功能,示例如下:Entry中仅能输入整数
import tkinter as tk
import tkinter.messagebox
main=tk.Tk()
v1=StringVar()
v2=StringVar()
def CheckValid(input):
#重置验证功能
e1.after_idle(lambda: e1.configure(validate="key"))
if input != "" :
try:
int(input)#判断是否为整数
except:
tk.messagebox.showerror(title='Error', message='请输入整数!')
e1.delete(0,tk.END)
return False
else:
return True
else:
return True
CheckValid1=main.register(CheckValid)
e1=tkinter.Entry(main,textvariable=v1,validate="key",validatecommand=(CheckValid1,'%P'))
e1.grid(row=0, column=1)
mainloop()