删除条目后,Python Tkinter验证命令不起作用

时间:2018-10-02 20:55:09

标签: python validation tkinter

在我的程序中,使用了delete命令后,条目小部件将不再验证-其想法是,如果满足特定要求,则框中的文本将被自动删除,但会继续验证输入。 / p>

from tkinter import *

TEXT_TO_MATCH = 'APPLE'

def validate(userinput):
   if userinput == TEXT_TO_MATCH:
       print(True)
        input_box.delete(0, END)
   else:
        print(False)
   return True

window = Tk()

window.title('Delete after validation')

reg = window.register(validate)

input_box = Entry(window, validatecommand=(reg, '%P'), validate='all')
input_box.pack()

window.mainloop()

1 个答案:

答案 0 :(得分:1)

当您从验证功能中编辑条目小部件时,条目小部件会自动将validate选项重置为“无”。

在控制权返回到after_idle后,您可以使用validate重设mainloop选项来重新启用验证

def validate(userinput):
    if userinput == TEXT_TO_MATCH:
        input_box.delete(0, END)
        input_box.after_idle(lambda: input_box.configure(validate="all"))
    return True