我在这里有几行代码来验证我的entry
小部件,它工作得很好,但是在删除内容并想重新设置验证之后,它就不起作用了。在
from tkinter import *
def MoneyValidation(S):
if S in ['0', '1', '2', '3', '4', '5']:
return True
root.bell()
return False
def delete():
vcmd_money2 = (root.register(MoneyValidation), '%S')
e.config(invcmd="keys", vcmd=vcmd_money2)
e.delete(0, END)
e.delete(0, END)
vcmd_money = (root.register(MoneyValidation), '%S')
e.config(validate="key", vcmd=vcmd_money)
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()
如果修改验证规则以允许同时删除多个字符,则根本不需要禁用验证。如果键入“123”并运行
e.delete(0, END)
而不禁用验证,则MoneyValidation
的值将为“123”。如果允许,可以单独验证这些数字的变化。在另一个好处是,使用这种方法,用户可以突出显示他的数字的一部分,并用退格键删除它。如果您保持MoneyValidation的原样,并且只在delete()调用期间禁用了验证,那么这是不可能的。在
我觉得你把这件事弄得太难了。只需关闭验证,删除文本并再次打开验证:
相关问题 更多 >
编程相关推荐