我有以下与尺码相关的代码:
import wx
class TableSelectPanel(wx.Panel):
def __init__(self, parent, *args, **kwargs):
wx.Panel.__init__(self, parent, *args, **kwargs)
self.title = wx.StaticText(self, label="Select Table")
self.tableList = wx.ListBox(self)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.title)
sizer.Add(self.tableList, flag=wx.EXPAND)
self.SetSizerAndFit(sizer)
class LobbyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None)
self.tableSelect = TableSelectPanel(self)
#window size
self.SetMinSize((800, 600))
self.SetMaxSize((800, 600))
self.SetSize((800, 600))
#sizers
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(self.tableSelect, flag=wx.EXPAND)
self.SetSizer(sizer)
self.Show(True)
我期望的是,我将有一个800x600的窗口,wx.ListBox
垂直拉伸,以适应桌子的整个高度。但是,虽然我有一个800x600的窗口,wx.ListBox
不会扩展到整个高度。相反,看起来面板确实拉伸了,但列表框没有:
Incorrect Layout http://i48.tinypic.com/n2zybn.png
我做错了什么?
答案 0 :(得分:1)
将proportion
设置为1:
sizer.Add(self.tableList, proportion=1, flag=wx.EXPAND)
尽管在wxSizer中未定义此参数的含义,但在wxBoxSizer中使用它来指示sizer的子节点是否可以在wxBoxSizer的主方向上更改其大小 - 其中0表示不可更改且值更多相对于同一wxBoxSizer的其他子元素的值,将解释为零。例如,您可能有一个带有三个子节点的水平wxBoxSizer,其中两个应该使用sizer更改其大小。然后,两个可伸缩的窗口将获得每个1的值,以使它们与sizer的水平尺寸一致地增长和缩小。