Вам не нужно вообще отключать проверку, если вы изменяете правило проверки, чтобы разрешить удаление нескольких символов одновременно.Если вы введете «123» и запустите e.delete(0, END)
без отключения проверки, тогда значение S MoneyValidation
будет «123».Если вы проверяете каждый символ S по отдельности, то вы можете разрешить такого рода многозначные изменения.
from tkinter import *
def MoneyValidation(S):
if all(c in ['0', '1', '2', '3', '4', '5'] for c in S):
return True
root.bell()
return False
def delete():
e.delete(0, END)
root = Tk()
vcmd_money = (root.register(MoneyValidation), '%S')
e = Entry(root, validate="key", vcmd=vcmd_money)
e.pack()
b = Button(text="DELETE", command=delete)
b.pack()
root.mainloop()
В качестве дополнительного преимущества, при таком подходе пользователь может выделить часть своего номера и удалить его с помощьюклавиша возвратаЭто было бы невозможно, если бы вы сохранили MoneyValidation таким, какой он есть, и отключили проверку только во время вызова delete ().