浏览代码

#560 introduce DisableableElement for ui.slider

Falko Schindler 2 年之前
父节点
当前提交
4f81536168

+ 17 - 0
nicegui/elements/mixins/disableable_element.py

@@ -0,0 +1,17 @@
+from ...element import Element
+
+
+class DisableableElement(Element):
+
+    def enable(self) -> None:
+        """Enable the element."""
+        self.props(remove='disable')
+
+    def disable(self) -> None:
+        """Disable the element."""
+        self.props(add='disable')
+
+    @property
+    def enabled(self) -> bool:
+        """Check if the element is enabled."""
+        return 'disable' not in self._props

+ 2 - 1
nicegui/elements/slider.py

@@ -1,9 +1,10 @@
 from typing import Callable, Optional
 from typing import Callable, Optional
 
 
+from .mixins.disableable_element import DisableableElement
 from .mixins.value_element import ValueElement
 from .mixins.value_element import ValueElement
 
 
 
 
-class Slider(ValueElement):
+class Slider(ValueElement, DisableableElement):
 
 
     def __init__(self, *,
     def __init__(self, *,
                  min: float,
                  min: float,

+ 10 - 0
website/more_documentation/slider_documentation.py

@@ -35,3 +35,13 @@ def more() -> None:
         ui.slider(min=0, max=10, step=0.1, value=5).props('label-always') \
         ui.slider(min=0, max=10, step=0.1, value=5).props('label-always') \
             .on('update:model-value', lambda msg: ui.notify(f'{msg["args"]}'),
             .on('update:model-value', lambda msg: ui.notify(f'{msg["args"]}'),
                 throttle=1.0, leading_events=False)
                 throttle=1.0, leading_events=False)
+
+    @text_demo('Disable slider', '''
+        You can disable a slider with the `disable()` method.
+        This will prevent the user from moving the slider.
+        The slider will also be grayed out.
+    ''')
+    def disable_slider():
+        slider = ui.slider(min=0, max=100, value=50)
+        ui.button('Disable slider', on_click=slider.disable)
+        ui.button('Enable slider', on_click=slider.enable)