我試圖在wxPython中安排一些面板。佈局的粗略表示如下:在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,但我似乎無法水平縮小窗口以使其顯示。我不確定是否有關於混合/最大面板尺寸的設置等,這可能會有所幫助?
偉大的答案 - 非常感謝你!你對增長的標誌/比例的解釋幫助我把我的頭圍繞wxPython多一點。 – 2013-02-25 11:37:36
我同意allie,你不能在文檔中找到這種解釋。 – alwbtc 2013-12-17 04:48:59