回答編集履歴

2

回答追加

2020/04/26 10:50

投稿

magichan
magichan

スコア15898

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- とりあえず、'**/**/**'フォーマットにそっているか(各数値は1桁以上)の検証を行うには
9
+ とりあえず、'dd/dd/dd'フォーマットにそっているか(各数値は1桁以上2桁以下)の検証を行うには
10
10
 
11
11
 
12
12
 
@@ -26,6 +26,14 @@
26
26
 
27
27
  ```
28
28
 
29
- となりますでしょうか。
29
+ となりますでしょうか。(値の範囲は全く見てません)
30
30
 
31
- ただ、この検証をあまり厳しくすると、入力がし難くなるので、バランスをとる必要がありそうです。
31
+ ただ、この検証をあまり厳しくすると、入力がし難くなるので、そのバランスをとる必要がありそうです。
32
+
33
+
34
+
35
+ (2) 複数指定する方法は無いような気がします。'ALL' を設定して、'%d' パラメータで判断すると良いのではないでしょうか。
36
+
37
+
38
+
39
+ (3) 1個のENTRYウェッジで処理できるものは残念ながら私は知りません。(私だったらスピンボックスなどに逃げると思います)

1

途中で送信したので修正

2020/04/26 10:50

投稿

magichan
magichan

スコア15898

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