GUIで入力制限をしてみたい件その2
前回の続きbeta-boostcircit.hatenablog.com
から
validatecommandオプションでは、コールバック関数とパラメーターを指定します。
validatecommand=(コールバック関数, パラメーター)
指定したパラメーターによって、コールバック関数に渡す値(テキスト)が異なるみたい。
どの値を渡したいかによって、パラメーターを変える。
パラメータ |
説明 |
---|---|
%P |
テキストボックスの入力されている文字(文字の挿入後) |
%s |
文字が入力される前の入力文字 |
%S |
挿入または削除される文字 |
%W |
ウィジェット名 |
%d |
数値を返す:1(挿入)、0(削除)、-1(その他) |
%i |
挿入または削除される文字のインデックス値 |
%v |
設定されている検証タイプ |
%V |
コールバックの検証タイプ |
使っていくうちに意味が分かればいいかな~
validatecommmandオプションで指定するコールバック関数は、
サンプルだとregister()メソッドを使って定義をする
vc = root.regiser(limit_char)
参考にしたサンプルコードだと
テキストボックスにテキストが入力されるたびに
(validate="key")、入力値(%P)がlimit_char関数に渡されて実行されていた。
limit_char関数内では、文字数が5文字以上になるとFalseとなるようなコードは以下の通り。
return len(string) <= 5
つまりテキストボックスに6文字目が入力できないということになる。
vc = root.root.regiser(limit_char) entry = tk.Entry(frame, validate="key", validatecommand = (vc, "%P")
という風にまとめると
これでテキストボックスに入力制限をかけられるようになる
あとは関数を作り、5文字までなど入力制限する文字数を決めるだけで良い。
def limit_char(string): return len(string) <= 5 #6文字目を入力出来なくする
これをPySimpleGUIでも出来ればいいなぁと思案中・・・
とりあえずコードの骨組みを立てないと
次回の栄養素記録補助GUIその2くらいに
入力制限の記事描ければいいな|д゚)