teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

回答追加

2020/04/26 10:50

投稿

magichan
magichan

スコア15898

answer CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  (1) validatecommand は入力された値が有効か無効かの検証を行い、有効の場合は `True`、無効の場合は `False` を返す必要がありますので、`hizuke_on_change`関数に return 文を追加してください。
4
4
 
5
- とりあえず、'**/**/**'フォーマットにそっているか(各数値は1桁以上)の検証を行うには
5
+ とりあえず、'dd/dd/dd'フォーマットにそっているか(各数値は1桁以上2桁以下)の検証を行うには
6
6
 
7
7
  ```Python
8
8
  def hizuke_on_change(self, d, i, P, s, S, v, V, W):
@@ -12,5 +12,9 @@
12
12
  return True
13
13
  return False
14
14
  ```
15
- となりますでしょうか。
15
+ となりますでしょうか。(値の範囲は全く見てません)
16
- ただ、この検証をあまり厳しくすると、入力がし難くなるので、バランスをとる必要がありそうです。
16
+ ただ、この検証をあまり厳しくすると、入力がし難くなるので、そのバランスをとる必要がありそうです。
17
+
18
+ (2) 複数指定する方法は無いような気がします。'ALL' を設定して、'%d' パラメータで判断すると良いのではないでしょうか。
19
+
20
+ (3) 1個のENTRYウェッジで処理できるものは残念ながら私は知りません。(私だったらスピンボックスなどに逃げると思います)

1

途中で送信したので修正

2020/04/26 10:50

投稿

magichan
magichan

スコア15898

answer CHANGED
@@ -1,3 +1,16 @@
1
+ 途中で送信してしまったので、とりあえず修正。。
2
+
1
3
  (1) validatecommand は入力された値が有効か無効かの検証を行い、有効の場合は `True`、無効の場合は `False` を返す必要がありますので、`hizuke_on_change`関数に return 文を追加してください。
2
4
 
3
- とりあえず、'**/**/**'フォーマットにそっているか(各数値は)
5
+ とりあえず、'**/**/**'フォーマットにそっているか(各数値は1桁以上の検証を行うには
6
+
7
+ ```Python
8
+ def hizuke_on_change(self, d, i, P, s, S, v, V, W):
9
+ # 未入力状態かフォーマットに沿っていたらOK
10
+ fmt = '^\d{1,2}/\d{1,2}/\d{1,2}$'
11
+ if re.match(fmt, P):
12
+ return True
13
+ return False
14
+ ```
15
+ となりますでしょうか。
16
+ ただ、この検証をあまり厳しくすると、入力がし難くなるので、バランスをとる必要がありそうです。