wxPython菜单栏导致奇怪的初始布局

wxPython菜单栏导致奇怪的初始布局,wxpython,Wxpython,我正在Python3上使用wxPython(Phoenix)。我当前的代码: import wx class GUI(wx.Frame): def __init__(self, parent, title): super(GUI, self).__init__(parent, title=title, size=(-1, -1)) self.ini_gui() self.Show() def ini_gui(self): self.status_bar = s

我正在Python3上使用wxPython(Phoenix)。我当前的代码:

import wx

class GUI(wx.Frame):
def __init__(self, parent, title):
    super(GUI, self).__init__(parent, title=title, size=(-1, -1))
    self.ini_gui()
    self.Show()

def ini_gui(self):
    self.status_bar = self.CreateStatusBar() 
    main_panel = wx.Panel(self)
    filemenu = wx.Menu() 
    menu_open = filemenu.Append(wx.ID_OPEN, 'Open', 'Open a file')
    menu_about = filemenu.Append(wx.ID_ABOUT, 'About', 'About...')

    menubar = wx.MenuBar()
    menubar.Append(filemenu, "File")
    # self.SetMenuBar(menubar) # !!!CAUSE WEIRD LAYOUT!!!

    vbox = wx.BoxSizer(wx.VERTICAL)
    selection_area = wx.BoxSizer(wx.HORIZONTAL)
    game_label = wx.StaticText(main_panel, label='Select a game')
    selection_area.Add(game_label, flag=wx.RIGHT, border=8)
    gamelist = ['A', 'B']
    self.game_combobox = wx.ComboBox(main_panel,
                                size=wx.DefaultSize, choices=gamelist)
    selection_area.Add(self.game_combobox)
    vbox.Add(selection_area, flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10)
    main_panel.SetSizer(vbox)

if __name__ == '__main__':
    app = wx.App()
    GUI(None, title='Demo')
    app.MainLoop()
窗口将如下所示:

但是当我添加菜单栏(取消注释第18行self.SetMenuBar(菜单栏))时,最初窗口将如下所示:

只有当我调整窗口大小或使其最大化时,它们的布局才会恢复正常

我的代码有什么问题如何使带有菜单栏的窗口第一次正确显示?如下所示:

谢谢

移动线路

self.SetMenuBar(menubar)

在ini的末尾,gui为我修复了它。

您可以在代码中使窗口的
大小变大:

super(GUI, self).__init__(parent, title=title, size=(-1, -1))
致:


这将消除每次程序运行时调整大小的问题。

谢谢,它可以工作!你知道它为什么会这样做吗?与大小写的布局顺序有关,另一种保持代码其余部分不变的方法是将main_panel.Layout()放在ini_gui的末尾,以引导main_panel布局其控件
super(GUI, self).__init__(parent, title=title, size=(400,200))