0
我想限制输入到条目小部件中的数字,以便它必须是4整数长,值0000到9999之间,有效地一个4位数的PIN号码。这个类可以正常工作,但是,对于以0开头的数字存在一个小问题。如果要输入0000,那么它只会取值0而不是实际值0000.有人可以帮我指出我做错了。Python验证和validateommand问题与ttk条目小部件
class ConstrainedEntry(ttk.Entry):
def __init__(self, *args, **kwargs):
ttk.Entry.__init__(self, *args, **kwargs)
vcmd = (self.register(self.on_validate),"%P")
self.configure(validate="key", validatecommand=vcmd)
def disallow(self):
self.bell()
def on_validate(self, new_value):
try:
if new_value.strip() == "": return True
value = int(new_value)
if value < 0 or value > 9999:
self.disallow()
return False
except ValueError:
self.disallow()
return False
return True
感谢
我不相信这将适用于上面的类,即时通讯错误“模块”对象没有属性“匹配” – user2207573 2013-04-08 11:23:11
@ user2207573对不起,这是一个错字。函数的名字是['match'](http://docs.python.org/3.3/library/re.html#re.match) – 2013-04-08 11:26:10
我注意到,就在我们看模块之前,这个改变仍然发生错误发生'文件'C:\ Python33 \ lib \ tkinter \ __ init__.py“,第2474行,删除 self.tk.call(self._w,'delete',first,last) _tkinter.TclError :预期的布尔值,但得到“无”' – user2207573 2013-04-08 11:31:17