0

入力ウィジェットに入力される数字を制限しようとしています。そのため、値は 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

ありがとう

4

1 に答える 1