# Komponenten

Components sind interaktive Widgets, die es Benutzern ermöglichen, Parameter zu konfigurieren oder Ergebnisse von Ihrem benutzerdefinierten Widget zu sehen.

{% hint style="info" %}
Komponenten werden durch Schlüsselwortargumente erstellt.
{% endhint %}

#### Generische Argumente <a href="#generic-arguments" id="generic-arguments"></a>

Generische Argumente gelten für alle benutzerdefinierten Komponenten. Sie können sie als Schlüsselwortargumente an Konstruktoren übergeben.

`tooltip: str = ''`

### Text Input <a href="#text-inputx20" id="text-inputx20"></a>

Erlaubt es Benutzern, Text/Zahl über eine einzelne Zeile einzugeben.

<figure><img src="/files/JtiuOnzeaonEWjivqMdg" alt=""><figcaption></figcaption></figure>

<mark style="color:blue;">**Konstruktor:**</mark>

`TextInput`

<mark style="color:blue;">**Schlüsselwortargumente:**</mark>

`text: str = '5'` : Standardwert des Text Eingabe

`place_holder: str = ''` : Text, der angezeigt wird, wenn das Text Input leer ist.

<mark style="color:blue;">**Attribute-Methoden**</mark>

`text -> str` : Empfängt den aktuellen Text, der im Text Input geschrieben ist.

<mark style="color:blue;">**Beispiel:**</mark>

```python
class Example_Block(Block):
    ...
    def init(self):
        ...
        self.param['text1'] = TextInput(text= '5', 
                                        place_holder='Geben Sie eine Zahl ein', 
                                        tooltip='Definiert Konstanten')
    
    def run(self):
        ...
        raw_constant: str = self.param['text1'].text
        constant: int = int(raw_constant)  # in Integer umwandeln
        ... 
```

### Drop Down List <a href="#drop-down-list" id="drop-down-list"></a>

Dropdown-Listen ermöglichen es Benutzern, eine Option aus einer bereitgestellten Liste von Texten auszuwählen.

<figure><img src="/files/abMg9kVbLLqkHIgNKysE" alt=""><figcaption></figcaption></figure>

<mark style="color:blue;">Konstruktor:</mark>

`DropDown`

<mark style="color:blue;">**Schlüsselwortargumente:**</mark>

`items: list[str, ...] = ['item1', 'item2', 'item3']`: Liste der Texte, die in der Dropdown-Liste angezeigt werden.

<mark style="color:blue;">Attribute-Methoden:</mark>

`selected_item -> str`: Gibt den Text des ausgewählten Items zurück. Gibt `''` zurück, wenn kein Text verfügbar ist.

`selected_index -> int`: Gibt das ausgewählte Item als Integer zurück. Gibt `0` zurück, wenn kein Item verfügbar ist.

<mark style="color:blue;">Beispiel:</mark>

```python
class Example_Block(Block):
    ...
    def init(self):
        ...
        self.param['drop_down'] = DropDown(items=['Methode 1', 'Methode 2', 'Methode 3'], 
                                        tooltip='Wählen Sie eine Methode')
    
    def run(self):
        ...
        raw_constant: int = self.param['drop_down'].selected_index()
        if raw_constant == 0:
            ... 
```

### Label <a href="#label" id="label"></a>

Labels sind einfache, textbasierte Komponenten, die statisch oder dynamisch Text auf Ihrem benutzerdefinierten Block anzeigen.

<figure><img src="/files/vEbrq2xbvK0t6HzBKQgC" alt=""><figcaption></figcaption></figure>

Sie werden auch verwendet, um Informationen über interaktive Komponenten bereitzustellen:

<figure><img src="/files/UwqaNuD9YndOVzbIxyos" alt=""><figcaption></figcaption></figure>

<mark style="color:blue;">Konstruktor:</mark>

`Label`

<mark style="color:blue;">**Schlüsselwortargumente:**</mark>

`text: str = ''`: Text, der auf der Dropdown-Liste angezeigt wird.

<mark style="color:blue;">Attribute-Methoden:</mark>

`set_text(text: str)`: Setzt den Text des Labels.

<mark style="color:blue;">Beispiel:</mark>

```python
class Example_Block(Block):
    ...
    def init(self):
        ...
        self.param['label'] = Label(text='Ergebnis ist: Nicht festgelegt', 
                                        tooltip='Zeigt den Mittelwert an')
    
    def run(self):
        ...
        self.param['label'].set_text(f'Ergebnis ist: {n}')
        ... 
```

### Slider <a href="#slider" id="slider"></a>

Beschränkt die Benutzereingabe auf einen Zahlenbereich.

<figure><img src="/files/FezNiFeJr1ubOS3Hzf4Q" alt=""><figcaption></figcaption></figure>

<mark style="color:blue;">Konstruktor:</mark>

Slider

<mark style="color:blue;">**Schlüsselwortargumente:**</mark>

`min: int = -5`: Mindestwert, der auf dem Schieberegler angezeigt wird.

`max: int = 5`: Höchstwert.

`val: int = 3`: Standardwert.

<mark style="color:blue;">Attribute-Methoden:</mark>

`value -> int`: Aktueller Wert des Schiebereglers.

<mark style="color:blue;">Beispiel:</mark>

```python
class Example_Block(Block):
    ...
    def init(self):
        ...
        self.param['slider'] = Slider(min=-5, max=5, val=3)
    
    def run(self):
        ...
        threshold: int = self.param['slider'].value
        ... 
```

### Slider Labeled <a href="#slider-labeled" id="slider-labeled"></a>

Das Gleiche wie [Slider](#slider), aber mit einem Label, das automatisch anzeigt, welcher Wert in der Komponente angezeigt wird.

<figure><img src="/files/ioG1aD73dk5CkWk72qeM" alt=""><figcaption></figcaption></figure>

<mark style="color:blue;">Konstruktor:</mark>

SliderLabeled

<mark style="color:blue;">**Schlüsselwortargumente:**</mark>

`min: int = -5`: Mindestwert, der auf dem Schieberegler angezeigt wird.

`max: int = 5`: Höchstwert.

`val: int = 3`: Standardwert.

`label: str ="Wert"`: Labeltext, der angezeigt werden soll.

`multiplier: float | int = 1`: Multipliziert den angezeigten Wert vor der Addition. Wenn Sie dies mit `add` verwenden, können Sie ungerade Zahlen anzeigen, wenn Sie möchten.

`add: float | int = 0`: Hinzugefügter Wert nach der Multiplikation.

<mark style="color:blue;">Attribute-Methoden:</mark>

`value -> int`: Aktueller Rohwert des Schiebereglers.

`modifiedValue -> int | float`: Aktueller modifizierter Wert des Schiebereglers.

<mark style="color:blue;">Beispiel:</mark>

```python
class Example_Block(Block):
    ...
    def init(self):
        ...
        self.param['threshold_odd'] = SliderLabeled(min= -5, max= 5, val= 3, label="Wert", multiplier=2, add=-1)
    
    def run(self):
        ...
        threshold_odd: int = self.param['threshold_odd'].modifiedValue
        ... 
```

### CheckBox <a href="#checkboxx20" id="checkboxx20"></a>

Erlaubt die Eingabe des logischen Zustands.

<figure><img src="/files/PHQr0I3qeYCcgWc5acFa" alt=""><figcaption></figcaption></figure>

<mark style="color:blue;">Konstruktor:</mark>

`CheckBox`

<mark style="color:blue;">**Schlüsselwortargumente:**</mark>

`text: str = ''`: Text, der neben der Kontrollkästchen angezeigt wird.

<mark style="color:blue;">Attribute-Methoden:</mark>

`is_checked -> str`: Setzt den Text des Labels.

<mark style="color:blue;">Beispiel:</mark>

```python
class Example_Block(Block):
    ...
    def init(self):
        ...
        self.param['gray_mode'] = CheckBox(text=': Grauer Modus')
    
    def run(self):
        ...
        flag_gray: bool = self.param['gray_mode'].is_checked
        ... 
```

### Button <a href="#button" id="button"></a>

Löst ein Ereignis in Ihrem Skript bei einem Mausklick aus. Diese Komponente ist auch sehr nützlich für das Ressourcenmanagement für benutzerdefinierte Blöcke in Ihrem Szenario.

<figure><img src="/files/Yxq1yxt8GeP4vorZm1wv" alt=""><figcaption></figcaption></figure>

<mark style="color:blue;">Konstruktor:</mark>

`Button`

<mark style="color:blue;">**Schlüsselwortargumente:**</mark>

`text: str = ''`: Text, der neben der Schaltfläche angezeigt wird.

<mark style="color:blue;">Attribute-Methoden:</mark>

`set_clicked_callback(callback: Callable)`: Setzt die Rückruffunktion, die jedes Mal ausgelöst wird, wenn die Schaltfläche angeklickt wird.

{% hint style="info" %}
Die Verwendung von `set_clicked_callback` wird immer im `init`-Teil Ihres benutzerdefinierten Blockskripts verwendet.
{% endhint %}

<mark style="color:blue;">Beispiel:</mark>

```python
...
class Example_Block(Block):
    ...
    file_path: str = ''
    def init(self):
        ...
        self.param['Choose File'] = Button(text= 'Datei auswählen')
        self.param['Choose File'].set_clicked_callback(load_image)
    
    def load_image(self):
        path = QAFileDialog.getOpenFileName(caption='Bild laden', 
                                        directory='C:/Images', 
                                        filter='Bilddateien (*.png *.jpg *.bmp)')
        self.file_path = self.register_resource('image-path', path)
        
    def run(self):
        image_path = self.get_resource('image-path')
    
```

Das obige Beispiel nutzt Rückrufe mit [`register_resource`](#block.register/_resource-name-str-path-str-greater-than-str) und [`get_resource`](#block.get/_resource-name-str-greater-than-str).

### Image <a href="#imagex20" id="imagex20"></a>

<figure><img src="/files/woMZyEYhygXk06w5U8nh" alt=""><figcaption></figcaption></figure>

<mark style="color:blue;">Konstruktor:</mark>

`Image`

<mark style="color:blue;">**Schlüsselwortargumente:**</mark>

`fixed_width: int = 80`: Bildhöhe, am besten verwendet mit `Block.width`

`fixed_height: int = 80`: Bildbreite, am besten verwendet mit `Block.height`

<mark style="color:blue;">Attribute-Methoden:</mark>

`update(img: npt.NDArray[np.uint8])`: Aktualisiert das angezeigte Bild mit drei oder einer Dimension.

<mark style="color:blue;">Beispiel:</mark>

```python
class Example_Block(Block):
    def init(self):
        ...
        self.param['Result'] = Image(fixed_width=self.width-40,  
					     fixed_height=self.height-80)

    def run(self):
        ...
        self.param['Result'].update(np.zeros((60, 60, 3)))
        ...
```

### Table <a href="#table" id="table"></a>

Erlaubt die Auswahl mehrerer Elemente/modi gleichzeitig.

<figure><img src="/files/STn7uF65NWQhPUesBFWr" alt=""><figcaption></figcaption></figure>

<mark style="color:blue;">Konstruktor:</mark>

`Table`

<mark style="color:blue;">**Schlüsselwortargumente:**</mark>

`items: list[str, ...] = ['item1', 'item2', 'item3']`: Liste der Texte, die in der Tabellenliste angezeigt werden.

<mark style="color:blue;">Attribute-Methoden:</mark>

`items -> list[str, ...]`: Gibt die Liste aller Elemente zurück.

`selected_items -> list[str, ...]`: Gibt die Liste der ausgewählten Elemente zurück.

`set_items(items: list[str, ...])`: Setzt die Elementliste.

<mark style="color:blue;">Beispiel:</mark>

```python
class Example_Block(Block):
    ...
    def init(self):
        ...
        self.param['Detection List'] = Table(items=['Mensch', 'Katze', 'Hund'])

    def run(self):
        ...
        detection_list: list[str, ...] = self.param['Detection List'].selected_items()
        ...
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.augelab.com/german/hauptfunktionen/create-plugins-with-designer-window/components.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
