我有以下与上浆有关的代码:

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不会扩展到整个高度。相反,似乎面板确实伸展了,但是列表框却没有:

python - 基本的wx尺寸问题-LMLPHP


我做错了什么?

最佳答案

proportion设置为1:

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



  尽管此参数的含义在wxSizer中未定义,但在wxBoxSizer中使用它来指示sizer的子级是否可以在wxBoxSizer的主方向上更改其大小-其中0表示不可更改,大于0的值表示相对于同一wxBoxSizer的其他子代的值解释。例如,您可能有一个带有三个子项的水平wxBoxSizer,其中两个子项应使用sizer更改其大小。然后,两个可拉伸窗口将分别获得1的值,以使它们与尺寸调整器的水平尺寸相等地增长和收缩。

10-02 22:28