FlexGridSizer-Verhalten mit und ohne SetMinSize...

Plattformunabhängige GUIs mit wxWidgets.
Antworten
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Hallo,

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
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Wirklich keiner eine Idee oder sogar Erklärung?

:(
Antworten