Ich verwende einen GridBacksizer, um zwei Panels innerhalb eines Frames zu platzieren.Platzieren von Elementen (Panels) in einem wx.GridBagSizer
control_panel = wx.Panel(self, id=ID_CONTROL_PANEL)
main_panel = wx.Panel(self, id=ID_MAIN_PANEL)
frame_sizer = wx.GridBagSizer(1, 1)
frame_sizer.Add(control_panel, (0, 0), (2, 5), flag=wx.EXPAND)
frame_sizer.Add(main_panel, (2, 0), (5, 5), flag=wx.EXPAND)
frame_sizer.AddGrowableRow(0)
frame_sizer.AddGrowableCol(0)
self.SetSizer(frame_sizer)
Ich möchte das control_panel über dem main_panel (wie Sie oben sehen können). Dies ist jedoch die Ausgabe erhalte ich:
Ich weiß nicht, warum die obere Platte so viel größer als die Bodenplatte ist, wenn ich das Gegenteil angegeben haben. (2, 5) für die Oberseite und (5, 5) für die Unterseite. Es hat auch ein seltsames Verhalten, wenn ich es kleiner verkleinere, es gibt mir im Grunde, was ich will (siehe Bild unten), aber ich weiß nicht, wie ich das Verhältnis halten soll, wenn ich es wieder größer mache.
jedoch beim Starten größer Ändern der Größe (sogar um einen kleinen Betrag) Sie können (siehe unten) sehen Sie die Formen und Verhältnisänderung dramatisch in der anderen Richtung (mit dem Boden viel kleiner und die oberen viel größer worden).
Immer noch versuchen, diese Sizer zu lernen und dieses Problem mit einem der Beispiele nicht wirklich ich gesehen habe finden. Versuche auch, mit allen Parametern zu experimentieren und einige Tests durchzuführen und ich kann nicht herausfinden, was hier vor sich geht. Jede Hilfe würde sehr geschätzt werden.
EDIT: Bild unten hinzugefügt, um Kommentar unten zu unterstützen.
Kann ich SetMaxSize trotzdem verwenden?Ich möchte, dass das obere Feld die gleiche Größe behält (in y, aber erweiterbar durch x), aber das untere Feld erweitert wird (in x und y). – johnharris85
Ich bin mir nicht sicher ... Sie könnten es vielleicht mit verschachtelten Sizer für das obere Panel bekommen, aber ich weiß es nicht. –