1
0
Эх сурвалжийг харах

let mixins peel arguments within __init__ (replacing additional init methods)

Falko Schindler 2 жил өмнө
parent
commit
f2fd389524

+ 1 - 2
nicegui/element.py

@@ -12,6 +12,7 @@ from .task_logger import create_task
 class Element(ABC, Visibility):
 
     def __init__(self, tag: str) -> None:
+        super().__init__()
         self.client = globals.client_stack[-1]
         self.id = self.client.next_element_id
         self.client.next_element_id += 1
@@ -28,8 +29,6 @@ class Element(ABC, Visibility):
         if self.client.slot_stack:
             self.client.slot_stack[-1].children.append(self)
 
-        self.init_visibility()
-
     def add_slot(self, name: str) -> Slot:
         self.slots[name] = Slot(self, name)
         return self.slots[name]

+ 1 - 2
nicegui/elements/badge.py

@@ -15,8 +15,7 @@ class Badge(TextElement):
         :param text_color: overrides text color (if needed); color name from the Quasar Color Palette (default: "white")
         :param outline: use 'outline' design (colored text and borders only) (default: False)
         """
-        super().__init__('q-badge')
-        self.init_text(text)
+        super().__init__(tag='q-badge', text=text)
         self._props['color'] = color
         self._props['text_color'] = text_color
         self._props['outline'] = outline

+ 1 - 2
nicegui/elements/button.py

@@ -12,8 +12,7 @@ class Button(TextElement):
         :param text: the label of the button
         :param on_click: callback which is invoked when button is pressed
         """
-        super().__init__('q-btn')
-        self.init_text(text)
+        super().__init__(tag='q-btn', text=text)
         self._props['color'] = 'primary'
 
         self.on('click', lambda _: handle_event(on_click, ClickEventArguments(sender=self, client=self.client)))

+ 1 - 3
nicegui/elements/checkbox.py

@@ -13,6 +13,4 @@ class Checkbox(TextElement, ValueElement):
         :param value: whether it should be checked initially (default: `False`)
         :param on_change: callback to execute when value changes
         """
-        super().__init__('q-checkbox')
-        self.init_text(text)
-        self.init_value(value, on_change)
+        super().__init__(tag='q-checkbox', text=text, value=value, on_value_change=on_change)

+ 1 - 2
nicegui/elements/html.py

@@ -13,5 +13,4 @@ class Html(ContentElement):
 
         :param content: the HTML code to be displayed
         """
-        super().__init__('div')
-        self.init_content(content)
+        super().__init__(tag='div', content=content)

+ 1 - 2
nicegui/elements/image.py

@@ -10,5 +10,4 @@ class Image(SourceElement):
 
         :param source: the source of the image; can be a URL or a base64 string
         """
-        super().__init__('q-img')
-        self.init_source(source)
+        super().__init__(tag='q-img', source=source)

+ 1 - 2
nicegui/elements/label.py

@@ -10,5 +10,4 @@ class Label(TextElement):
 
         :param text: the content of the label
         """
-        super().__init__('div')
-        self.init_text(text)
+        super().__init__(tag='div', text=text)

+ 2 - 1
nicegui/elements/mixins/content_element.py

@@ -7,7 +7,8 @@ from ...element import Element
 class ContentElement(Element):
     content = BindableProperty(on_change=lambda sender, content: sender.on_content_change(content))
 
-    def init_content(self, content: str) -> None:
+    def __init__(self, *, content: str, **kwargs) -> None:
+        super().__init__(**kwargs)
         self.content = content
         self.on_content_change(content)
 

+ 2 - 1
nicegui/elements/mixins/source_element.py

@@ -7,7 +7,8 @@ from ...element import Element
 class SourceElement(Element):
     source = BindableProperty(on_change=lambda sender, source: sender.on_source_change(source))
 
-    def init_source(self, source: str) -> None:
+    def __init__(self, *, source: str, **kwargs) -> None:
+        super().__init__(**kwargs)
         self.source = source
         self._props['src'] = source
 

+ 2 - 1
nicegui/elements/mixins/text_element.py

@@ -7,7 +7,8 @@ from ...element import Element
 class TextElement(Element):
     text = BindableProperty(on_change=lambda sender, text: sender.on_text_change(text))
 
-    def init_text(self, text: str) -> None:
+    def __init__(self, *, text: str, **kwargs) -> None:
+        super().__init__(**kwargs)
         self.text = text
         self._text = text
 

+ 3 - 2
nicegui/elements/mixins/value_element.py

@@ -8,10 +8,11 @@ from ...events import ValueChangeEventArguments, handle_event
 class ValueElement(Element):
     value = BindableProperty(on_change=lambda sender, value: sender.on_value_change(value))
 
-    def init_value(self, value: Any, on_change: Callable) -> None:
+    def __init__(self, *, value: Any, on_value_change: Callable, **kwargs) -> None:
+        super().__init__(**kwargs)
         self.value = value
         self._props['model-value'] = value
-        self.change_handler = on_change
+        self.change_handler = on_value_change
 
         def handle_change(msg: Dict) -> None:
             self.value = msg['args']

+ 2 - 1
nicegui/elements/mixins/visibility.py

@@ -9,7 +9,8 @@ if TYPE_CHECKING:
 class Visibility:
     visible = BindableProperty(on_change=lambda sender, visible: sender.on_visibility_change(visible))
 
-    def init_visibility(self) -> None:
+    def __init__(self, **kwargs) -> None:
+        super().__init__(**kwargs)
         self.visible = True
 
     def bind_visibility_to(self, target_object: Any, target_name: str = 'visible', forward: Callable = lambda x: x):

+ 1 - 2
nicegui/elements/tooltip.py

@@ -10,5 +10,4 @@ class Tooltip(TextElement):
 
         :param text: the content of the tooltip
         """
-        super().__init__('q-tooltip')
-        self.init_text(text)
+        super().__init__(tag='q-tooltip', text=text)