gpt4 book ai didi

python - wxPython:一个子窗口的 SplitterWindow 和 SetMaxSize

转载 作者:行者123 更新时间:2023-11-28 23:04:30 27 4
gpt4 key购买 nike

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

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

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

  2. 如何确保我无法将窗扇向左移动(减小窗口 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()

一张图说一千个字:enter image description here蓝色区域是分离器的一部分,但未被窗口 A 填充。

任何正确方向的帮助/提示都将受到赞赏。

谢谢,丹尼尔

最佳答案

我不再积极使用 wx,因此无法测试解决方案。但是我相信你正在寻找的是

SetSashGravity(0.5)

SplitterWindow 的默认行为是,在发生 Resize 事件时,只会调整右侧或底部窗口的大小。在您的情况下,您已对该窗口施加了最大尺寸。

请参阅 SetSashGravity 的文档

关于python - wxPython:一个子窗口的 SplitterWindow 和 SetMaxSize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7561513/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com