[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