我在wxFrame中有一个wxCollapsiblePane和一个wxGrid。每次我折叠或展开wxCollapsiblePane时,整个框架都会调整大小。我想要的是让wxGrid成长和缩小,并使框架保持相同的大小。我还注意到虽然我明确地创建了大小为500x500的wxFrame,但它实际上会缩小以适应其内容。我认为这与sizer有关,但我尝试过的任何东西似乎都没有影响到这一点。谁能指出我哪里出错?到目前为止,这是我的代码。
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()
答案 0 :(得分:4)
为了不允许CollapsiblePane调整框架大小,请在创建时使用wx.CP_NO_TLW_RESIZE样式。见http://docs.wxwidgets.org/trunk/classwx_collapsible_pane.html
Fit()调用正在缩小框架以适应内容。如果您不希望这种情况发生,则不需要它。并且代码中的SetAutoLayout调用是多余的,因为SetSizer会为您启用该属性。