Nesting windows and sizers

Hello,

There is something I don't get when nesting windows and sizers. When I nest two sizers, everything is fine:

app = wx.App()
frame = wx.Frame(None, -1)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(wx.Button(frame, -1, "foo"))
sizer2.Add(wx.Button(frame, -1, "bar"))
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(sizer2)
sizer.Add(wx.Button(frame, -1, "test"))
frame.SetSizer(sizer)
frame.SetAutoLayout(True)
sizer.Fit(frame)
frame.Show()
app.MainLoop()

However, if the nested sizer is encapsulated into a window, it fails to produce the same result:

app = wx.App()
frame = wx.Frame(None, -1)
window = wx.Window(frame, -1)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(wx.Button(window, -1, "foo"))
sizer2.Add(wx.Button(window, -1, "bar"))
window.SetSizer(sizer2)
window.SetAutoLayout(True)
sizer2.Fit(window)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(window)
sizer.Add(wx.Button(frame, -1, "test"))
frame.SetSizer(sizer)
frame.SetAutoLayout(True)
sizer.Fit(frame)
frame.Show()
app.MainLoop()

Could somebody tell me what part is missing?

Thanks for your help,

B.

1 Like