次のような単一のアイテムを含む 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
フラグを設定するとうまくいきますが、サイザーを 1 つの項目だけに使用するのはばかげているように思えます。
もっと簡単な解決策はありますか?
(親フレームのサイザーに直接追加することもできますStaticText
が、私のデザインでは、フレームから直接開始する方が理にかなっています。)
BoxSizer
1つのアイテムで を作成すると、 では機能しないことに気付きました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)
もちろん、1 つのアイテムでも問題ありませんが、後で縦方向にアイテムを追加し、両方を拡大したい場合はどうすればよいでしょうか (たとえば、ユーザーのウィンドウが拡大されたとき)。
編集:ああ、ボックスサイザーを両方の方法で成長させるには、プロポーションを使用する必要があることがわかりました。(つまり、 の呼び出しで 0 を 1 に置き換えBoxSizer.Add
ます。)