FlexGridSizer-Verhalten mit und ohne SetMinSize...
Verfasst: Montag 8. Februar 2010, 15:47
Hallo,
nachfolgend erstmal der Code, der wohl das macht, was ich will... Nur verstehen kann ich's nicht...:
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
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