Sfoglia il codice sorgente

explicit number input

Falko Schindler 4 anni fa
parent
commit
52504ae0d4
4 ha cambiato i file con 25 aggiunte e 5 eliminazioni
  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.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.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('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():
             with ui.column():
                 ui.radio(['A', 'B', 'C'], on_change=lambda e: output.set_text(e.value))
                 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))
                 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
 import justpy as jp
-from typing import Callable, Literal, Union
+from typing import Callable
 from .element import Element
 from .element import Element
 from ..utils import handle_exceptions, provide_arguments
 from ..utils import handle_exceptions, provide_arguments
 
 
@@ -7,11 +7,10 @@ class Input(Element):
 
 
     def __init__(self,
     def __init__(self,
                  placeholder: str = None,
                  placeholder: str = None,
-                 value: Union[str, float] = None,
-                 type: Literal['text', 'number'] = 'text',
+                 value: str = None,
                  on_change: Callable = None):
                  on_change: Callable = None):
 
 
-        view = jp.QInput(placeholder=placeholder, type=type)
+        view = jp.QInput(placeholder=placeholder, type='text')
 
 
         if value is not None:
         if value is not None:
             view.value = value
             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.input import Input as input
     from .elements.label import Label as label
     from .elements.label import Label as label
     from .elements.link import Link as link
     from .elements.link import Link as link
+    from .elements.number import Number as number
     from .elements.radio import Radio as radio
     from .elements.radio import Radio as radio
     from .elements.select import Select as select
     from .elements.select import Select as select
     from .elements.slider import Slider as slider
     from .elements.slider import Slider as slider