nachfolgend erstmal der Code, der wohl das macht, was ich will... Nur verstehen kann ich's nicht...:
Code: Alles auswählen
#!/usr/bin/python
#-*- coding: utf-8 -*-
import wx
class Frame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, pos=(300,50), size=(500,200))
gridpanel = wx.Panel(self, -1)
panelzwei = wx.Panel(self, -1)
wx.StaticText(panelzwei, label="Das hier ist panelzwei...\nmit zwei Textzeilen...")
panel = []
grid = wx.FlexGridSizer(0, 2, 2, 2)
box = wx.BoxSizer(wx.VERTICAL)
for i in range(6):
panel.append(wx.Panel(gridpanel, -1, style=wx.BORDER_SIMPLE))
panel[i].SetMinSize((10,10)) # Warum??
wx.StaticText(panel[i], label="Panel "+str(i)+"\n Hier steht ein Text\n"
"und hier auch noch\n"
"und so weiter...")
grid.Add(panel[i], 0, wx.EXPAND)
grid.AddGrowableCol(0, 0)
grid.AddGrowableCol(1, 0)
grid.AddGrowableRow(0, 0)
grid.AddGrowableRow(1, 0)
grid.AddGrowableRow(2, 0)
gridpanel.SetSizer(grid)
box.Add(gridpanel, 1, wx.EXPAND)
box.Add(panelzwei, 0, wx.EXPAND)
self.SetSizer(box)
class App(wx.App):
def __init__(self):
wx.App.__init__(self)
def OnInit(self):
frame1 = Frame()
frame1.Show()
return True
if __name__ == '__main__':
app = App()
app.MainLoop()
Das Programm erzeugt einen FlexGridSizer, der die beinhalteten Panels gleichmäßig auf dem verfügbaren Platz anzeigt und wenn nötig den Panelinhalt aller 6 Panels beschneidet. Wenn ich allerdings die SetMinSize()-Methode (Zeile 19) nicht anwende, beginnt der Sizer von unten her die Panels abzuschneiden.
Welchen Einfluß hat die SetMinSize()-Methode? Sollte es nicht eher SetMaxSize() heißen? Ich bin total blockiert....
Würde mich über eine Erklärung sehr freuen...
Gruß
mutetella