wxPython菜单栏导致奇怪的初始布局
我正在Python3上使用wxPython(Phoenix)。我当前的代码: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
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))