File tree 2 files changed +25
-2
lines changed
src/prompt_toolkit/shortcuts
2 files changed +25
-2
lines changed Original file line number Diff line number Diff line change
1
+ from prompt_toolkit .shortcuts import input_dialog
2
+ from prompt_toolkit .validation import Validator
3
+
4
+
5
+ def is_number (text ):
6
+ return text .isdigit ()
7
+
8
+
9
+ validator = Validator .from_callable (
10
+ is_number ,
11
+ error_message = 'This input contains non-numeric characters' )
12
+
13
+ age = input_dialog (title = "Age" , text = "Your age:" ,
14
+ validator = validator ).run ()
15
+
16
+ print (f"Your age: { age } " )
Original file line number Diff line number Diff line change 18
18
from prompt_toolkit .layout .containers import AnyContainer , HSplit
19
19
from prompt_toolkit .layout .dimension import Dimension as D
20
20
from prompt_toolkit .styles import BaseStyle
21
- from prompt_toolkit .validation import Validator
21
+ from prompt_toolkit .validation import Validator , ValidationError
22
22
from prompt_toolkit .widgets import (
23
23
Box ,
24
24
Button ,
@@ -124,7 +124,14 @@ def accept(buf: Buffer) -> bool:
124
124
return True # Keep text.
125
125
126
126
def ok_handler () -> None :
127
- get_app ().exit (result = textfield .text )
127
+ if validator is None :
128
+ get_app ().exit (result = textfield .text )
129
+ else :
130
+ try :
131
+ textfield .validator .validate (textfield .document )
132
+ get_app ().exit (result = textfield .text )
133
+ except ValidationError :
134
+ get_app ().layout .focus (textfield )
128
135
129
136
ok_button = Button (text = ok_text , handler = ok_handler )
130
137
cancel_button = Button (text = cancel_text , handler = _return_none )
You can’t perform that action at this time.
0 commit comments