我有一个与它关联的GridBagSizer的wx.Panel。该面板放置在另一个Sizer(BoxSizer)中,其添加了扩展标志 - 意味着面板占据了sizer的全部宽度,这非常棒。 ...但现在面板的内部尺寸不会填满面板。当面板在另一个wx.sizer中展开时,如何展开wx.panel的wx.sizer?
我试着将内部sizer的标志设置为wx.Expand | wx.ALL,当我添加它的组件时,但没有奏效。任何人都知道如何确保sizer在扩展面板时保持与面板相同的宽度?
编辑:我的代码,创建一个包含GridBagSizer面板:
def getNewButton(self, bmp1, bmp2, label):
panel = wx.Panel(self.frame, -1, pos=(0,0), style=wx.BORDER_THEME)
sizer = wx.GridBagSizer(0, 1)
#The button
b = buttons.GenBitmapToggleButton(panel, wx.ID_ANY, None)
self.frame.Bind(wx.EVT_BUTTON, self.OnToggleButton, b)
b.Bind(wx.EVT_ENTER_WINDOW, self.OnMouseEnter)
b.Bind(wx.EVT_LEAVE_WINDOW, self.OnMouseLeave)
mask = wx.Mask(bmp1, wx.BLUE)
bmp1.SetMask(mask)
b.SetBitmapLabel(bmp1)
mask = wx.Mask(bmp2, wx.BLUE)
bmp2.SetMask(mask)
b.SetBitmapSelected(bmp2)
b.SetToggle(False)
b.SetInitialSize(size = wx.Size(30, 30))
b.SetBezelWidth(0)
#The Label Button
l1 = buttons.GenButton(panel, wx.ID_ANY, label, style=wx.BORDER_NONE)
self.frame.Bind(wx.EVT_BUTTON, self.OnFlatButton, l1)
l1.Bind(wx.EVT_ENTER_WINDOW, self.OnMouseEnter)
l1.Bind(wx.EVT_LEAVE_WINDOW, self.OnNonToggleMouseLeave)
sizer.Add(b, wx.GBPosition(0,0))
sizer.Add(l1, wx.GBPosition(0,1), flag=wx.EXPAND)
panel.SetSizer(sizer)
sizer.SetSizeHints(panel)
self.buttonsList.append(ImgToggleButtonComponents(b,panel,l1))
return panel
试过sizerHints,但没有运气,我放置它们,所以我发布了实际创建面板的方法,它的sizer – Fry 2009-03-04 18:02:19