wxPython - Layoutverwaltung

Ein GUI-Widget kann im Containerfenster platziert werden, indem die in Pixel gemessenen absoluten Koordinaten angegeben werden. Die Koordinaten beziehen sich auf die Abmessungen des Fensters, die durch das Größenargument seines Konstruktors definiert sind. Die Position des Widgets im Fenster wird durch definiertpos Argument seines Konstruktors.

import wx  

app = wx.App() 
window = wx.Frame(None, title = "wxPython Frame", size = (300,200)) 
panel = wx.Panel(window) 
label = wx.StaticText(panel, label = "Hello World", pos = (100,50)) 
window.Show(True) 
app.MainLoop()

Diese Absolute Positioning ist jedoch aus folgenden Gründen nicht geeignet -

  • Die Position des Widgets ändert sich auch dann nicht, wenn die Fenstergröße geändert wird.

  • Das Erscheinungsbild ist auf verschiedenen Anzeigegeräten mit unterschiedlichen Auflösungen möglicherweise nicht einheitlich.

  • Änderungen am Layout sind schwierig, da möglicherweise das gesamte Formular neu gestaltet werden muss.

Die wxPython-API bietet Layoutklassen für eine elegantere Verwaltung der Positionierung von Widgets im Container. Die Vorteile von Layout-Managern gegenüber der absoluten Positionierung sind:

  • Die Größe von Widgets im Fenster wird automatisch geändert.
  • Gewährleistet ein einheitliches Erscheinungsbild auf Anzeigegeräten mit unterschiedlichen Auflösungen.
  • Das dynamische Hinzufügen oder Entfernen von Widgets ist möglich, ohne dass eine Neugestaltung erforderlich ist.

Der Layout-Manager heißt in wxPython Sizer. Wx.Sizer ist die Basisklasse für alle Sizer-Unterklassen. Lassen Sie uns einige der wichtigsten Größen wie wx.BoxSizer, wx.StaticBoxSizer, wx.GridSizer, wx.FlexGridSizer und wx.GridBagSizer diskutieren.

SN Größen & Beschreibung
1 BoxSizer

Mit dieser Größe können die Steuerelemente zeilen- oder spaltenweise angeordnet werden. Das Layout von BoxSizer wird durch das Orientierungsargument (entweder wxVERTICAL oder wxHORIZONTAL) bestimmt.

2 GridSizer

Wie der Name schon sagt, präsentiert ein GridSizer-Objekt ein zweidimensionales Gitter. Steuerelemente werden im Rastersteckplatz in der Reihenfolge von links nach rechts und von oben nach unten hinzugefügt.

3 FlexiGridSizer

Dieser Sizer hat auch ein zweidimensionales Gitter. Es bietet jedoch wenig mehr Flexibilität bei der Anordnung der Kontrollen in den Zellen.

4 GridBagSizer

GridBagSizer ist ein vielseitiger Sizer. Es bietet mehr Verbesserungen als FlexiGridSizer. Das untergeordnete Widget kann einer bestimmten Zelle im Raster hinzugefügt werden.

5 StaticBoxSizer

Ein StaticBoxSizer fügt einen Box Sizer in eine statische Box ein. Es bietet einen Rand um die Box zusammen mit einem Etikett oben.