我有一个包含单个项目的 WxPython 框架,例如:
class Panel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.text = wx.StaticText(self, label='Panel 1')
我有一个包含多个面板的框架,其中包括这个面板,尺寸由 sizer 控制。 我希望这个
StaticText
能够扩展。
使用仅包含文本的 BoxSizer
并设置 wx.EXPAND
标志可以解决问题,但似乎为一个项目使用 sizer 不太合适。有更简单的解决方案吗?
(我可以直接将
StaticText
添加到父框架的 sizer 中,但对于我的设计来说,从框架直接开始更有意义。)
我刚意识到,当创建一个仅包含一个项目的
BoxSizer
时,无法使用 wx.VERTICAL
:class Panel1(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.BackgroundColour = 'red'
sizer = wx.BoxSizer(wx.VERTICAL)
self.Sizer = sizer
self.list = wx.ListBox(self, choices=[str(i) for i in xrange(100)])
sizer.Add(self.list, 0, wx.EXPAND)
sizer.Fit(self)
当然,只有一个项目是可以的,但如果我想稍后垂直添加一个项目并仍然使它们都扩展呢(例如,当用户的窗口被扩展时)?
编辑:啊,我刚刚发现必须使用比例才能使框布局管理器在两个方向上增长。(即,在 BoxSizer.Add 的调用中将 0 替换为 1。)