小学wx大小问题

时间:2012-11-13 19:14:35

标签: python user-interface layout wxpython sizer

我有以下与尺码相关的代码:

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

我做错了什么?

1 个答案:

答案 0 :(得分:1)

proportion设置为1:

sizer.Add(self.tableList, proportion=1, flag=wx.EXPAND)
  

尽管在wxSizer中未定义此参数的含义,但在wxBoxSizer中使用它来指示sizer的子节点是否可以在wxBoxSizer的主方向上更改其大小 - 其中0表示不可更改且值更多相对于同一wxBoxSizer的其他子元素的值,将解释为零。例如,您可能有一个带有三个子节点的水平wxBoxSizer,其中两个应该使用sizer更改其大小。然后,两个可伸缩的窗口将获得每个1的值,以使它们与sizer的水平尺寸一致地增长和缩小。