入力ウィジェットに入力される数字を制限しようとしています。そのため、値は 0000 から 9999 までの 4 つの整数、実質的には 4 桁のピン番号でなければなりません。このクラスは正常に動作しますが、0 で始まる数字に関しては少し問題があります。数字 0000 を入力すると、実際の値 0000 ではなく、値 0 のみが使用されます。間違っている。
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
ありがとう