2

アルファベットを許可せず、桁数を 7 に制限するエントリ ウィジェットのコードを作成しました。

私のコードスニペット:

self.DelayLabel = ttk.Label(self) self.DelayLabel["text"] = "timeout" vcmd = (root.register(self.IntLength_Delay), '%P', '%S") self.Delay = ttk.Entry(self, width = '5', validate = 'key', validatecommand = vcmd)

def IntLenght_Delay(self,value,text):
   if text in '0123456789':
       if len(value)<7:
          return True
       else:
           return False
   else:
       return False
4

3 に答える 3

0

ロジックに従ってください。「987」と入力したとしましょう。それを選択して、削除しようとします。検証関数text(現在の値) では になります"987"。コードはそのための準備ができていないため、最初の if ステートメントは失敗します。失敗したため、検証は False を返し、編集を許可しません。

Tkinter が関数に渡すもの (削除の場合は長い文字列) を準備する必要があり、編集後に空の値を明示的に許可する必要があります。

于 2014-03-14T16:56:32.080 に答える