wxPython:SplitterWindow和SetMaxSize用于一个子窗口

wxPython:SplitterWindow和SetMaxSize用于一个子窗口,python,wxpython,splitter,sizer,Python,Wxpython,Splitter,Sizer,我是wxPython的新手,所以我希望我没有忽略任何基本的东西: 我想使用SplitterWindow将框架的内容拆分为两个可调整大小的子窗口(a和B),但我希望其中一个窗口(B)设置为MaxSize 不幸的是,这带来了一个问题: 当我调整(放大)整个框架时(我试图适应这里的wxPython术语;通常,我会说:调整窗口大小),我希望一旦达到窗口B的最大大小,窗口A将自动放大以填充整个框架内容。遗憾的是,事实并非如此 如何确保我不能将窗扇向左移动(减小窗口B的大小)?在当前情况下,窗口B只是向左移

我是wxPython的新手,所以我希望我没有忽略任何基本的东西: 我想使用SplitterWindow将框架的内容拆分为两个可调整大小的子窗口(a和B),但我希望其中一个窗口(B)设置为MaxSize

不幸的是,这带来了一个问题:

  • 当我调整(放大)整个框架时(我试图适应这里的wxPython术语;通常,我会说:调整窗口大小),我希望一旦达到窗口B的最大大小,窗口A将自动放大以填充整个框架内容。遗憾的是,事实并非如此

  • 如何确保我不能将窗扇向左移动(减小窗口B的大小)?在当前情况下,窗口B只是向左移动(不改变宽度),并显示WindowSplitter的蓝色背景

  • 这是我的密码:

    import wx         
    
    class MainWindow(wx.Frame):
    
        def __init__(self, parent, title):
            wx.Frame.__init__(self, parent, title=title, size=(500,300))
    
            # Create View
            self.loadView()
    
            #self.SetAutoLayout(1)
            self.GetSizer().Fit(self)
            self.Centre()
            self.Show()
    
        def loadView(self):        
            splitter = wx.SplitterWindow(self, wx.ID_ANY, style = wx.SP_BORDER, size=(500, 300))
            splitter.SetBackgroundColour('#0000ff')
    
            panelLeft = wx.Panel(splitter, size=(200,100))
            panelLeft.SetBackgroundColour('#00ff00')
    
            panelRight = wx.Panel(splitter, size=(200,100))
            panelRight.SetBackgroundColour('#ff0000')
            panelRight.SetMaxSize((200, -1))
    
            splitter.SplitVertically(panelLeft, panelRight)
    
            self.SetSizer(wx.BoxSizer(wx.HORIZONTAL))
            self.GetSizer().Add(splitter, 1, wx.EXPAND)
    
    
    app = wx.App(False)
    frame = MainWindow(None, "Test")
    app.MainLoop()
    
    一幅画能说出千言万语: 蓝色区域是拆分器的一部分,但未被窗口A填充

    任何正确方向的帮助/提示都将不胜感激

    谢谢,
    Daniel

    我不再积极与wx合作,因此无法测试解决方案。不过我相信你要找的是

    SetSashGravity(0.5)
    
    SplitterWindow的默认行为是,在Resize事件发生时,仅调整右侧或底部窗口的大小。在你的情况下,你已经对那扇窗户施加了一个最大尺寸


    参见文档中的

    Hi Donkopotamus;谢谢事实上,SetSashGravity(1.0)是我需要的参数,因此当窗口B达到其最大尺寸时,窗口A将调整大小。刚刚用我之前忘记的第二个相关问题更新了帖子,并实际描述了移动窗扇时的问题。(1.)已由Donkopotamus回答。谢谢