1

次のサイジング関連のコードがあります。

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)

私が期待しているwx.ListBoxのは、テーブルの高さ全体に合うように垂直方向に伸びる800x600のウィンドウがあることです。ただし、800x600のウィンドウはありますが、wx.ListBox高さ全体に拡張されません。むしろ、パネルは伸びているように見えますが、リストボックスは伸びていません。

レイアウトが正しくない

私は何を間違えましたか?

4

1 に答える 1

1

proportion1に設定します。

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

このパラメーターの意味はwxSizerでは定義されていませんが、wxBoxSizerで使用され、サイザーの子がwxBoxSizerの主な方向でサイズを変更できるかどうかを示します。0は変更不可を表し、ゼロより大きい値は同じwxBoxSizerの他の子の値に関連して解釈されます。たとえば、3つの子を持つ水平wxBoxSizerがあり、そのうちの2つはサイザーでサイズを変更することになっています。次に、2つの伸縮可能なウィンドウはそれぞれ1の値を取得して、サイザーの水平方向の寸法に合わせて拡大および縮小します。

于 2012-11-13T19:26:39.140 に答える