我正在尝试创建这个:
|---------------------------------------------|
| Panel 1a | Panel 2a | Panel 3 |
| | | |
| | | |
|-----------------------------------| |
| Panel 1b | Panel 2b | |
| | | |
|---------------------------------------------|
到目前为止,我只能创建这个:
^{pr2}$如何将面板1a和面板2a一分为二?用分流器?在
我的代码如下:
import wx
class TestSashWindow(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, -1)
winids = []
leftwin1 = wx.SashLayoutWindow(self, -1, wx.DefaultPosition, (200, 30), wx.NO_BORDER|wx.SW_3D)
leftwin1.SetDefaultSize((120, 1000))
leftwin1.SetOrientation(wx.LAYOUT_VERTICAL)
leftwin1.SetAlignment(wx.LAYOUT_RIGHT)
leftwin1.SetSashVisible(wx.SASH_LEFT, True)
self.leftWindow1 = leftwin1
winids.append(leftwin1.GetId())
self.remainingSpace = wx.Panel(self, -1, style=wx.SUNKEN_BORDER)
leftwin2 = wx.SashLayoutWindow(self, -1, wx.DefaultPosition, (200, 30), wx.NO_BORDER|wx.SW_3D)
leftwin2.SetDefaultSize((120, 1000))
leftwin2.SetOrientation(wx.LAYOUT_VERTICAL)
leftwin2.SetAlignment(wx.LAYOUT_LEFT)
leftwin2.SetSashVisible(wx.SASH_RIGHT, True)
self.leftWindow2 = leftwin2
winids.append(leftwin2.GetId())
self.remainingSpace = wx.Panel(self, -1, style=wx.SUNKEN_BORDER)
self.Bind(wx.EVT_SASH_DRAGGED_RANGE, self.OnSashDrag,id=min(winids), id2=max(winids))
self.Bind(wx.EVT_SIZE, self.OnSize)
slw = leftwin1
x = wx.Notebook(slw, -1)
for i in xrange(2):
x.AddPage(wx.Panel(x, -1), str(i))
class mainframe(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, size=(400,300), title="sash test")
self.a = TestSashWindow(self)
if __name__ == '__main__':
a = wx.App(0)
b = mainframe()
b.Show(1)
a.MainLoop()
布局管理的一般概念是容器和小部件。在容器中,可以放置其他容器和小部件。为了完成给定的布局,您必须以一种巧妙的方式在层次结构中组织容器和小部件。由于您提供的代码仍然不完整,所以我不会为您提供完整的解决方案,而是回答您的问题:如何拆分两个面板。在
panel1
、panel2
和{BoxSizer
)panel1a
和{panel1
作为父面板。将小部件放入这两个面板中。在panel2a
和{panel2
作为父面板。将小部件放入这两个面板中。在Splitter
(仅当您希望使其大小可调整时)。在这种情况下,panel1
和{可视化:
相关问题 更多 >
编程相关推荐