wxPython でいくつかのパネルを配置しようとしています。レイアウトの大まかな表現は次のとおりです。
基本的に、サイズ変更時に左 (オレンジ) パネル (およびその内容) のサイズが変更されず、右 (青) パネルが必要に応じて拡大/拡大できるように、左右のパネルを探しています。ただし横向きのみ。
これまでのコード (いくつかのランダムなフィラー ウィジェットを含む) は以下のとおりです。私の質問はコードに従います:
import wx
import wx.lib.scrolledpanel as scrolled
class MainWindow(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent)
#add position panel
posPnl = IdPanel(self)
lbl1 = wx.StaticText(posPnl, label="Position")
lbl2 = wx.StaticText(posPnl, label="Size")
sizeCtrl = wx.TextCtrl(posPnl)
posPnlSzr = wx.BoxSizer(wx.VERTICAL)
posPnlSzr.Add(lbl1, 1, wx.FIXED&wx.LEFT)
posPnlSzr.Add(sizeCtrl, 1, wx.LEFT&wx.FIXED)
posPnlSzr.Add(lbl2, 1, wx.FIXED&wx.LEFT)
posPnl.SetSizer(posPnlSzr)
posPnl2 = TimelinePanel(self)
lbl12 = wx.StaticText(posPnl2, label="Position")
lbl22 = wx.StaticText(posPnl2, label="Size")
sizeCtrl2 = wx.TextCtrl(posPnl2)
posPnlSzr2 = wx.BoxSizer(wx.VERTICAL)
posPnlSzr2.Add(lbl12, 1, wx.GROW)
posPnlSzr2.Add(sizeCtrl2, 1, wx.GROW)
posPnlSzr2.Add(lbl22, 1, wx.GROW)
posPnl2.SetSizer(posPnlSzr2)
mainSzr = wx.BoxSizer(wx.HORIZONTAL)
mainSzr.Add(posPnl, 1, wx.FIXED)
#mainSzr.AddSpacer(10)
mainSzr.Add(posPnl2, 1, wx.GROW)
self.SetSizerAndFit(mainSzr)
self.Show()
class IdPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, -1, size = (400, 200))
self.SetBackgroundColour((255, 0, 255))
class TimelinePanel(scrolled.ScrolledPanel):
def __init__(self, parent):
scrolled.ScrolledPanel.__init__(self, parent, -1, size = (300, 200))
self.SetBackgroundColour((255, 0, 0))
app = wx.App(False)
frame = MainWindow(None, "Trading Client")
app.MainLoop()
私の質問:
- サイザーを使用して、右側のパネルのみが水平方向にのみ拡張されるようにするにはどうすればよいですか? 現在、左側のパネルのコンテンツは固定されたままですが、パネル自体はまだ拡張されています。
- 最初の質問を少し変更して、右側のみが水平方向に拡大し、両方のパネルが垂直方向に拡大するようにしたい場合、どうすればよいですか?
- 右側のパネルの x 軸に wx.lib.scrolledpanel を使用していますが、ウィンドウを水平方向に縮小して表示することができないようです。これに役立つミックス/最大パネルサイズなどの設定があるかどうかはわかりませんか?