[python] wxPython, dynamická velikost sizeru

BoneFlute boneflute na taco-beru.name
Pátek Říjen 10 12:03:42 CEST 2008


Zdravím.

Rád bych radu.

Mám okno (wx.ScrolledWindow), které poté umístím na panel (wx.Panel). Do 
tohoto okna jsem vložil wx.GridSizer. Přesněji řečeno takto:

class CalendarWeekWindow(wx.ScrolledWindow):

...

   def OnCreate(self, evt):
     self.Unbind(wx.EVT_SIZE)
     vbox = wx.BoxSizer(wx.VERTICAL)
     self.legend = wx.BoxSizer(wx.HORIZONTAL)
     self.grid = wx.GridSizer(4, 7)
     vbox.Add(self.legend, 0, wx.EXPAND)
     vbox.Add(self.grid, 0, wx.EXPAND)
     self.SetSizer(vbox)
     self.Layout()
     vbox.Fit(self)
     self.Refresh()

...

Následně programově přidám do grid instance class TermButton(wx.Panel)
Ten má zobrazovat určité informace, něco na způsob kalendáře.

Čeho se mi nedaří dosáhnout je to, abych mohl programově změnit výšku 
tohoto TermButton. Chtěl bych, aby ten panel měl velikost 3:2. A když 
budu roztahovat šířku CalendarWeekWindow, tak se automaticky měnila i 
výška tohoto TermButton.

Zkoušel jsem v reakci na TermButton::EVT_SIZE měnit velikost tohoto 
prvku. Ne, že by to nefungovalo. Ale zřejmě to není správně, protože se 
začali ty prvky různě krabatit a překrejvat.

Pak mě napadlo, nastavit Grid na stretch. Jenže to mi pak vytáhne 
velikost toho TermButtonu přes celou vejšku, což také nechci.

Pak mě napadlo, že by mohlo fungovat nastavit tedy nějak výšku toho 
políčka sizeru. Podle něho se přeci roztáhne prvek. Jenže to jsem 
nezjistil jak. SetSize() metodu nemá, SetDimension() jsem po pravdě 
nepochopil, a SetMinSize() také nějak nereaguje.

Obávám se, že mi docházejí nápady.

Věděl by někdo jak na to?


--
BF


Další informace o konferenci Python