Kapitel 20 – Multi-Screen UI in LVGL
Zur Navigation springen
Zur Suche springen
| LVGL 9 mit MicroPython | |
|---|---|
| Kapitel | 20 |
| Titel | Multi-Screen UI |
| Voraussetzungen | Grundkenntnisse in MicroPython |
| Getestet mit | LVGL 9.x |
| Schwierigkeitsgrad | ★★★★☆ |
| Benötigte Zeit | 60 Minuten |
| Status | in Arbeit |
Kapitel 20 – Multi-Screen UI in LVGL[Bearbeiten | Quelltext bearbeiten]
Lernziel[Bearbeiten | Quelltext bearbeiten]
Nach diesem Kapitel kannst du
- mehrere Screens in LVGL verwenden,
- zwischen Screens wechseln,
- einfache Menüstrukturen aufbauen,
- UI sauber in Seiten organisieren.
Warum Multi-Screen?[Bearbeiten | Quelltext bearbeiten]
Bisher haben wir alles auf einem Screen gebaut.
Das reicht für einfache Tests.
Echte Anwendungen brauchen jedoch:
- Startbildschirm
- Menü
- Einstellungen
- Anzeige-Seiten
- Unterseiten
Grundidee[Bearbeiten | Quelltext bearbeiten]
Ein Screen ist ein eigener UI-Bereich.
LVGL kann mehrere Screens verwalten und zwischen ihnen wechseln.
Screen erstellen[Bearbeiten | Quelltext bearbeiten]
import lvgl as lv
scr1 = lv.obj()
scr2 = lv.obj()Screen aktivieren[Bearbeiten | Quelltext bearbeiten]
lv.screen_load(scr1)Damit wird scr1 sichtbar.
Erster Screen[Bearbeiten | Quelltext bearbeiten]
label1 = lv.label(scr1)
label1.set_text("Startscreen")
label1.center()Zweiter Screen[Bearbeiten | Quelltext bearbeiten]
label2 = lv.label(scr2)
label2.set_text("Menü")
label2.center()Wechsel per Button[Bearbeiten | Quelltext bearbeiten]
def go_to_menu(e):
lv.screen_load(scr2)
btn = lv.button(scr1)
btn.align(lv.ALIGN.BOTTOM_MID, 0, -20)
btn_label = lv.label(btn)
btn_label.set_text("Zum Menü")
btn_label.center()
btn.add_event_cb(go_to_menu, lv.EVENT.CLICKED, None)Zurück-Button[Bearbeiten | Quelltext bearbeiten]
def go_back(e):
lv.screen_load(scr1)
btn_back = lv.button(scr2)
btn_back.align(lv.ALIGN.BOTTOM_MID, 0, -20)
label_back = lv.label(btn_back)
label_back.set_text("Zurück")
label_back.center()
btn_back.add_event_cb(go_back, lv.EVENT.CLICKED, None)Erklärung[Bearbeiten | Quelltext bearbeiten]
- Jeder Screen ist ein eigenes Objekt
- lv.screen_load() wechselt die Ansicht
- Widgets gehören immer zu einem Screen
Daten bleiben erhalten[Bearbeiten | Quelltext bearbeiten]
Wichtig:
Screens werden nicht gelöscht.
Das bedeutet:
- Werte bleiben erhalten
- Zustände bleiben gespeichert
- Wechsel ist schnell
Typischer Aufbau[Bearbeiten | Quelltext bearbeiten]
Ein typisches LVGL-System besteht aus:
- Startscreen
- Hauptmenü
- Funktionsseiten
- Einstellungsseiten
Beispiel Struktur[Bearbeiten | Quelltext bearbeiten]
scr_start
scr_menu
scr_settings
scr_infoBest Practice[Bearbeiten | Quelltext bearbeiten]
Hinweis
Screens sollten logisch getrennte Funktionen haben.
Nicht alles in einen Screen packen.
Typischer Fehler[Bearbeiten | Quelltext bearbeiten]
Achtung
Viele erstellen Widgets immer wieder neu beim Screen-Wechsel.
Besser ist:
Screens einmal erstellen und wiederverwenden.
Erweiterung: Screen-Funktionen[Bearbeiten | Quelltext bearbeiten]
Für größere Projekte empfiehlt sich:
def create_menu_screen():
scr = lv.obj()
...
return scrVorteil[Bearbeiten | Quelltext bearbeiten]
- sauberer Code
- bessere Struktur
- einfache Erweiterung
Merke[Bearbeiten | Quelltext bearbeiten]
Merke
Ein Screen ist eine vollständige UI-Seite in LVGL.
Zusammenfassung[Bearbeiten | Quelltext bearbeiten]
- LVGL unterstützt mehrere Screens
- Wechsel mit lv.screen_load()
- Widgets gehören zu einem Screen
- Screens sollten einmal erstellt werden
- ideale Basis für echte Anwendungen