Kapitel 20 – Multi-Screen UI in LVGL

Aus Micropython
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_info

Best 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 scr

Vorteil[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