使用Python 2.6,wx.Python:
想知道是否有人可能知道如何使用FourWaySplitter构建四个面板窗口。 (除非我错了,FourWaySplitter会做我将要描述的内容。使用FourWaySplitter,任何子面板大小的任何变化都会改变所有子面板的大小。)
这就是我需要的:
一个垂直分割和两个 INDEPENDENT 水平分割每个新分割的垂直部分。 (听起来很简单,但经过一天尝试拆分器和分级器后,我终于承认了失败。)
无论如何,我们的想法是只有垂直分割器会改变所有四个窗口的大小。垂直分离器左侧的水平分离器只会改变垂直分离器左侧的两个窗口/面板,而垂直分离器右侧的水平分割器只会改变右侧的两个窗口/面板垂直分离器。
一个具体的工作实例会得到很多帮助,非常感谢,如果你来我家,我会给你一些煎饼。
答案 0 :(得分:0)
这对我来说也很混乱。幸运的是,我想写一篇关于这个主题的文章,我终于在一个月或三个月之前的几个小时后弄明白了。我还没有写过这篇文章,但是为了这个答案,我把我的例子配对了一点。希望你能遵循它:
import random
import wx
########################################################################
class RandomPanel(wx.Panel):
""""""
#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)
color = random.choice(["red", "green", "blue", "yellow"])
self.SetBackgroundColour(color)
########################################################################
class MainPanel(wx.Panel):
""""""
#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)
# create the sizers
sizer = wx.BoxSizer(wx.VERTICAL)
twoSplitSizer = wx.BoxSizer(wx.HORIZONTAL)
verticalSplitter = wx.SplitterWindow(self)
# create the left side
leftSplitter = wx.SplitterWindow(verticalSplitter)
panelOne = RandomPanel(leftSplitter)
panelTwo = RandomPanel(leftSplitter)
leftSplitter.SplitHorizontally(panelOne, panelTwo)
leftSplitter.SetSashGravity(0.5)
# create the remote side
rightSplitter = wx.SplitterWindow(verticalSplitter)
panelThree = RandomPanel(rightSplitter)
panelFour = RandomPanel(rightSplitter)
rightSplitter.SplitHorizontally(panelThree, panelFour)
rightSplitter.SetSashGravity(0.5)
verticalSplitter.SplitVertically(leftSplitter, rightSplitter)
verticalSplitter.SetSashGravity(0.5)
sizer.Add(verticalSplitter, 1, wx.EXPAND)
self.SetSizer(sizer)
########################################################################
class MainFrame(wx.Frame):
""""""
#----------------------------------------------------------------------
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, None, title="4-Way Split", size=(800,600))
panel = MainPanel(self)
self.Show()
#----------------------------------------------------------------------
if __name__ == "__main__":
app = wx.App(False)
frame = MainFrame()
app.MainLoop()
我使用随机颜色只是为了更容易区分面板。通常,每个面板上都有不同的小部件。无论如何,这对我在Windows上使用wxPython 2.8.11