Размеры wxpython с перекрывающимися панелями
Я пытаюсь создать рамку с двумя панелями. Одна панель будет отображаться время от времени и должна перекрывать другую, оставаясь в центре кадра. Следующий код работает нормально, если включена только последняя панель, то есть после изменения размера панель остается в центре кадра:
import wx
class MyFrame(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, None,size = (300,300))
panel1 = wx.Panel(self)
#panel3 = wx.Panel(self)
hbox = wx.BoxSizer(wx.HORIZONTAL)
panel2 = wx.Panel(panel1, size=(50,50))
panel2.SetBackgroundColour(wx.RED)
hbox.AddStretchSpacer(1)
hbox.Add(panel2, 0, wx.ALIGN_CENTER)
hbox.AddStretchSpacer(1)
panel1.SetSizerAndFit(hbox)
self.Show()
app = wx.App()
win = MyFrame()
app.MainLoop()
panel2
отображается в середине кадра и остается там, когда я изменяю размер окна. Тем не менее, когда я раскомментирую panel3=...
линия, panel2
отображается не в центре, а в верхнем левом углу основной рамки. Кажется, Sizer неправильно рассчитывает размеры и / или положение родителя panel1
, Я явно новичок в этом, кто-то может объяснить, что происходит?