Kapitel 12 – Grid Layout

Aus Micropython
Zur Navigation springen Zur Suche springen
LVGL 9 mit MicroPython
Kapitel 12
Titel Grid Layout
Voraussetzungen Grundkenntnisse in MicroPython
Getestet mit LVGL 9.x
Schwierigkeitsgrad ★★★☆☆
Benötigte Zeit 45 Minuten
Status in Arbeit

Kapitel 12 – Grid Layout[Bearbeiten | Quelltext bearbeiten]

Lernziel[Bearbeiten | Quelltext bearbeiten]

Nach diesem Kapitel kannst du

  • Grid Layout aktivieren,
  • Zeilen und Spalten definieren,
  • Widgets exakt in ein Raster einordnen,
  • einfache Dashboard-Strukturen bauen.

Was ist Grid?[Bearbeiten | Quelltext bearbeiten]

Grid ist ein Layout-System in LVGL.

Es teilt einen Container in

  • Zeilen
  • Spalten

Widgets werden in dieses Raster einsortiert.

Unterschied zu Flex[Bearbeiten | Quelltext bearbeiten]

  • Flex → fließende Anordnung
  • Grid → feste Struktur

Grid ist vergleichbar mit einer Tabelle.

Grid aktivieren[Bearbeiten | Quelltext bearbeiten]

Bevor Grid genutzt werden kann, muss ein Layout gesetzt werden.

cont = lv.obj(scr)
cont.set_size(300, 200)

Spalten definieren[Bearbeiten | Quelltext bearbeiten]

Die Spalten werden als Liste angegeben:

col_dsc = [100, 100, lv.GRID_TEMPLATE_LAST]

Zeilen definieren[Bearbeiten | Quelltext bearbeiten]

row_dsc = [50, 50, lv.GRID_TEMPLATE_LAST]

Layout setzen[Bearbeiten | Quelltext bearbeiten]

cont.set_grid_dsc_array(col_dsc, row_dsc)
cont.set_layout(lv.LAYOUT_GRID)

Beispiel[Bearbeiten | Quelltext bearbeiten]

import lvgl as lv

scr = lv.screen_active()

cont = lv.obj(scr)
cont.set_size(220, 120)
cont.center()

col_dsc = [100, 100, lv.GRID_TEMPLATE_LAST]
row_dsc = [50, 50, lv.GRID_TEMPLATE_LAST]

cont.set_grid_dsc_array(col_dsc, row_dsc)
cont.set_layout(lv.LAYOUT_GRID)

Widgets im Grid[Bearbeiten | Quelltext bearbeiten]

Widgets werden gezielt in Zellen platziert.

btn1 = lv.button(cont)
btn2 = lv.button(cont)
btn3 = lv.button(cont)
btn4 = lv.button(cont)

Position im Grid setzen[Bearbeiten | Quelltext bearbeiten]

btn1.set_grid_cell(lv.GRID_ALIGN_STRETCH, 0, 1,
                   lv.GRID_ALIGN_STRETCH, 0, 1)

Erklärung[Bearbeiten | Quelltext bearbeiten]

Die Parameter bedeuten:

  • horizontale Ausrichtung
  • Startspalte
  • Spaltenspanne
  • vertikale Ausrichtung
  • Startzeile
  • Zeilenspanne

Beispiel: 2x2 Raster[Bearbeiten | Quelltext bearbeiten]

btn1.set_grid_cell(lv.GRID_ALIGN_STRETCH, 0, 1,
                   lv.GRID_ALIGN_STRETCH, 0, 1)

btn2.set_grid_cell(lv.GRID_ALIGN_STRETCH, 1, 1,
                   lv.GRID_ALIGN_STRETCH, 0, 1)

btn3.set_grid_cell(lv.GRID_ALIGN_STRETCH, 0, 1,
                   lv.GRID_ALIGN_STRETCH, 1, 1)

btn4.set_grid_cell(lv.GRID_ALIGN_STRETCH, 1, 1,
                   lv.GRID_ALIGN_STRETCH, 1, 1)

Ergebnis[Bearbeiten | Quelltext bearbeiten]

Ein gleichmäßiges 2x2 Raster mit vier Buttons.

Wann Grid verwenden?[Bearbeiten | Quelltext bearbeiten]

Grid ist ideal für:

  • Dashboards
  • Steuerpanels
  • Messanzeigen
  • strukturierte Menüs

Typischer Fehler[Bearbeiten | Quelltext bearbeiten]

Achtung

Widgets erscheinen nicht automatisch im Grid.

Jedes Widget muss explizit einer Zelle zugewiesen werden.

Hinweis[Bearbeiten | Quelltext bearbeiten]

Hinweis

Grid ist mächtiger als Flex, aber auch komplexer.

Für einfache Layouts ist Flex oft schneller.

Merke[Bearbeiten | Quelltext bearbeiten]

Merke

Grid eignet sich für feste, tabellarische Layouts.

Zusammenfassung[Bearbeiten | Quelltext bearbeiten]

  • Grid teilt Container in Zeilen und Spalten
  • Widgets werden gezielt platziert
  • Ideal für strukturierte UIs
  • Flex = flexibel, Grid = exakt