LVGL 08 Events
Zur Navigation springen
Zur Suche springen
| LVGL 9 mit MicroPython | |
|---|---|
| Kapitel | 9 |
| Titel | Events |
| Voraussetzungen | Grundkenntnisse in MicroPython |
| Getestet mit | LVGL 9.x |
| Schwierigkeitsgrad | ★★☆☆☆ |
| Benötigte Zeit | 35 Minuten |
| Status | in Arbeit |
Kapitel 8 – Events[Bearbeiten | Quelltext bearbeiten]
Lernziel[Bearbeiten | Quelltext bearbeiten]
Nach diesem Kapitel kannst du
- auf Benutzeraktionen reagieren,
- Event-Handler schreiben,
- zwischen verschiedenen Event-Typen unterscheiden,
- mehrere Widgets mit einem Handler steuern.
Was ist ein Event?[Bearbeiten | Quelltext bearbeiten]
Ein Event ist ein Ereignis, das von LVGL ausgelöst wird.
Beispiele:
- ein Button wird gedrückt
- ein Slider wird bewegt
- ein Widget erhält den Fokus
- ein Objekt wird gelöscht
Events sind der wichtigste Mechanismus für Interaktion.
Einfaches Event Beispiel[Bearbeiten | Quelltext bearbeiten]
import lvgl as lv
scr = lv.screen_active()
btn = lv.button(scr)
btn.center()
label = lv.label(btn)
label.set_text("OK")
def on_click(e):
print("Button gedrückt")
btn.add_event_cb(on_click, lv.EVENT.CLICKED, None)Erklärung[Bearbeiten | Quelltext bearbeiten]
Die Funktion
def on_click(e):wird immer dann aufgerufen, wenn das Event ausgelöst wird.
Mit
btn.add_event_cb(...)wird der Handler registriert.
Was ist e?[Bearbeiten | Quelltext bearbeiten]
Der Parameter
eenthält Informationen über das Event.
Dazu gehören:
- welches Widget das Event ausgelöst hat
- welcher Event-Typ ausgelöst wurde
Event-Typ CLICKED[Bearbeiten | Quelltext bearbeiten]
lv.EVENT.CLICKEDwird ausgelöst, wenn der Benutzer ein Widget antippt und wieder loslässt.
Weitere wichtige Events[Bearbeiten | Quelltext bearbeiten]
- PRESSED → beim Drücken
- RELEASED → beim Loslassen
- LONG_PRESSED → langes Drücken
- VALUE_CHANGED → Wert hat sich geändert
Mehrere Widgets, ein Handler[Bearbeiten | Quelltext bearbeiten]
Mehrere Buttons können denselben Handler verwenden.
def on_click(e):
obj = e.get_target()
print("Gedrückt:", obj)
btn1.add_event_cb(on_click, lv.EVENT.CLICKED, None)
btn2.add_event_cb(on_click, lv.EVENT.CLICKED, None)Erklärung[Bearbeiten | Quelltext bearbeiten]
Mit
e.get_target()wird das auslösende Widget ermittelt.
Typischer Fehler[Bearbeiten | Quelltext bearbeiten]
Achtung
Viele versuchen, Events direkt im Widget zu speichern.
In LVGL werden Events immer über Callbacks verarbeitet.
Beispiel mit mehreren Buttons[Bearbeiten | Quelltext bearbeiten]
def on_click(e):
obj = e.get_target()
print("Button gedrückt:", obj)
btn1 = lv.button(scr)
btn1.align(lv.ALIGN.LEFT_MID, 10, 0)
btn2 = lv.button(scr)
btn2.align(lv.ALIGN.RIGHT_MID, -10, 0)
btn1.add_event_cb(on_click, lv.EVENT.CLICKED, None)
btn2.add_event_cb(on_click, lv.EVENT.CLICKED, None)Hinweis[Bearbeiten | Quelltext bearbeiten]
Hinweis
Ein Event-Handler kann für viele Widgets gleichzeitig verwendet werden.
Das reduziert Code und vereinfacht die Struktur.
Best Practice[Bearbeiten | Quelltext bearbeiten]
- Immer e.get_target() verwenden
- Möglichst wenige Handler schreiben
- Logik zentralisieren
Zusammenfassung[Bearbeiten | Quelltext bearbeiten]
- Events steuern Interaktion in LVGL
- CLICKED ist der wichtigste Einstieg
- Event-Handler sind normale Python-Funktionen
- e enthält Informationen zum Auslöser
- Ein Handler kann mehrere Widgets bedienen