我有一个包含单个项目的 WxPython 框架,例如:
class Panel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.text = wx.StaticText(self, label='Panel 1')
我有一个包含几个面板的框架,包括这个,尺寸由尺寸确定。我希望这个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)
一个项目当然可以,但是如果我想稍后垂直添加一个项目并且仍然让它们都展开(例如,当用户的窗口展开时)怎么办?
编辑:啊,我刚刚发现必须使用比例才能使 boxsizers 双向增长。(即,将 0 替换为 1BoxSizer.Add
调用。)