使用Python 2.6,wx.Python:

想知道是否有人会知道如何使用FourWaySplitter构建一个四面板窗口。 (除非我错了,FourWaySplitter会做我将要描述的事情。使用FourWaySplitter可以更改任何子面板的大小,从而更改所有子面板的大小。)

这是我需要的:

在每个新分割的垂直部分上,一个垂直分割和两个独立水平分割一个。 (听起来很简单,但是经过一天的尝试,尝试了分离器和分级器的所有穿孔之后,我终于承认失败了。)

无论如何,这个想法是只有垂直分离器才能改变所有四个窗口的大小。垂直分割器左侧的水平分割器将仅更改垂直分割器左侧的两个窗口/面板,垂直分割器右侧的水平分割器将仅更改右侧的两个窗口/面板垂直分离器的

一个具体的工作示例将为您提供很多帮助,我们将不胜感激,如果您来到我家,我会为您做些煎饼。

最佳答案

这也让我感到困惑。幸运的是,我想写一篇关于该主题的文章,一个月或三个月前几个小时后,我终于想通了。我仍然没有写这篇文章,但是我为这个答案做了一些配对。希望您可以遵循它:

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()


我使用随机颜色只是为了更容易区分面板。通常,每个面板上都有不同的小部件。无论如何,这在使用wxPython 2.8.11的Windows上对我有效

关于python - 类似于FourWaySplitter,但有所不同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8459880/

10-13 08:37