Forráskód Böngészése

explicit number input

Falko Schindler 4 éve
szülő
commit
52504ae0d4
4 módosított fájl, 25 hozzáadás és 5 törlés
  1. 1 1
      main.py
  2. 3 4
      nicegui/elements/input.py
  3. 20 0
      nicegui/elements/number.py
  4. 1 0
      nicegui/ui.py

+ 1 - 1
main.py

@@ -14,7 +14,7 @@ with ui.row():
                 ui.switch('Switch me!', on_change=lambda e: output.set_text('Switched' if e.value else 'Unswitched'))
                 ui.slider(0, 100, on_change=lambda e: output.set_text(e.value))
                 ui.input('Text input', on_change=lambda e: output.set_text(e.value))
-                ui.input('Number input', on_change=lambda e: output.set_text(e.value), type='number')
+                ui.number('Number input', on_change=lambda e: output.set_text(e.value))
             with ui.column():
                 ui.radio(['A', 'B', 'C'], on_change=lambda e: output.set_text(e.value))
                 ui.select(['1', '2', '3'], on_change=lambda e: output.set_text(e.value))

+ 3 - 4
nicegui/elements/input.py

@@ -1,5 +1,5 @@
 import justpy as jp
-from typing import Callable, Literal, Union
+from typing import Callable
 from .element import Element
 from ..utils import handle_exceptions, provide_arguments
 
@@ -7,11 +7,10 @@ class Input(Element):
 
     def __init__(self,
                  placeholder: str = None,
-                 value: Union[str, float] = None,
-                 type: Literal['text', 'number'] = 'text',
+                 value: str = None,
                  on_change: Callable = None):
 
-        view = jp.QInput(placeholder=placeholder, type=type)
+        view = jp.QInput(placeholder=placeholder, type='text')
 
         if value is not None:
             view.value = value

+ 20 - 0
nicegui/elements/number.py

@@ -0,0 +1,20 @@
+import justpy as jp
+from typing import Callable
+from .element import Element
+from ..utils import handle_exceptions, provide_arguments
+
+class Number(Element):
+
+    def __init__(self,
+                 placeholder: str = None,
+                 value: float = None,
+                 on_change: Callable = None):
+
+        view = jp.QInput(placeholder=placeholder, type='number')
+
+        if value is not None:
+            view.value = value
+        if on_change is not None:
+            view.on('input', handle_exceptions(provide_arguments(on_change, 'value')))
+
+        super().__init__(view)

+ 1 - 0
nicegui/ui.py

@@ -6,6 +6,7 @@ class Ui:
     from .elements.input import Input as input
     from .elements.label import Label as label
     from .elements.link import Link as link
+    from .elements.number import Number as number
     from .elements.radio import Radio as radio
     from .elements.select import Select as select
     from .elements.slider import Slider as slider