次のような単一のアイテムを含む 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が、私のデザインでは、フレームから直接開始する方が理にかなっています。)
BoxSizer1つのアイテムで を作成すると、 では機能しないことに気付きました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ます。)