Размеры 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, Я явно новичок в этом, кто-то может объяснить, что происходит?

0 ответов

Другие вопросы по тегам