> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/german/wichtige-funktionen/create-plugins-with-designer-window/components.md).

# 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()
        ...
```
