Python wxCollapsiblePane强制调整框架大小

Python wxCollapsiblePane强制调整框架大小,python,user-interface,layout,wxpython,wxwidgets,Python,User Interface,Layout,Wxpython,Wxwidgets,我有一个wxCollapsiblePane和一个wxFrame中的wxGrid。每次折叠或展开wxCollapsiblePane时,整个框架都会调整大小。我想要的是wxGrid变大变小,框架保持不变。我还注意到,尽管我显式地创建了大小为500x500的wxFrame,但它实际上会缩小以适应其内容。我假设这与施胶器有关,但我尝试过的任何东西似乎都不会影响这一点。有人能指出我哪里出了问题吗?这是到目前为止我的代码 import wx import wx.grid class Frame(wx.Fr

我有一个wxCollapsiblePane和一个wxFrame中的wxGrid。每次折叠或展开wxCollapsiblePane时,整个框架都会调整大小。我想要的是wxGrid变大变小,框架保持不变。我还注意到,尽管我显式地创建了大小为500x500的wxFrame,但它实际上会缩小以适应其内容。我假设这与施胶器有关,但我尝试过的任何东西似乎都不会影响这一点。有人能指出我哪里出了问题吗?这是到目前为止我的代码

import wx
import wx.grid

class Frame(wx.Frame):

    def __init__(self, *args, **kwargs):
        super(Frame, self).__init__(*args, **kwargs)
        cpane = wx.CollapsiblePane(self)
        p = cpane.GetPane()
        sz = wx.BoxSizer()
        sz.Add(wx.TextCtrl(p), 1, wx.EXPAND)
        p.SetSizer(sz)

        sizer = wx.BoxSizer(wx.VERTICAL)
        self.grid = wx.grid.Grid(self)
        self.grid.CreateGrid(5, 5)

        sizer.Add(cpane, 0, wx.EXPAND)
        sizer.Add(self.grid, 1, wx.EXPAND)
        self.SetSizer(sizer)
        self.SetAutoLayout(1)
        sizer.Fit(self)
        self.Show()

app = wx.App(False)
win = Frame(None, size=(500, 500))
win.Show()
app.MainLoop()

为了不允许可折叠窗格调整框架的大小,请在创建框架时使用wx.CP_NO_TLW_resize样式。看


Fit调用就是缩小框架以适应内容。如果你不想发生这种情况,就不需要它。代码中的SetAutoLayout调用是多余的,因为SetSizer将为您打开该属性。

为了不允许可折叠窗格调整框架大小,请在创建框架时使用wx.CP\u NO\u TLW\u resize样式。看


Fit调用就是缩小框架以适应内容。如果你不想发生这种情况,就不需要它。代码中的SetAutoLayout调用是多余的,因为SetSizer将为您打开该属性。

谢谢,我找到了一种解决方法,将所有小部件放在框架中的单个面板中,但这是一个更接近的解决方案。我一直想知道SetAutoLayout,但我直接从官方文档中的示例中复制了它,这些示例可能已经过时了。谢谢,我找到了一种解决方法,将所有小部件放在框架的单个面板中,但这是一个更接近的解决方案。我想知道SetAutoLayout,但我直接从官方文档中的示例中复制了它,这些示例可能已经过时了