我在Python 3上使用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()
窗口如下所示:
但是当我添加一个MenuBar(取消注释第18行self.SetMenuBar(menubar)
)时,最初窗口将如下所示:
如果我调整窗口大小或最大化它,它们的布局只会恢复正常。
我的代码有什么问题? 第一次如何使MenuBar窗口正确显示?如下:
谢谢!
答案 0 :(得分:1)
移动线
self.SetMenuBar(menubar)
到ini_gui的末尾为我修复了它。
答案 1 :(得分:0)
您可以在代码中使窗口的size
更大:
super(GUI, self).__init__(parent, title=title, size=(-1, -1))
到:
super(GUI, self).__init__(parent, title=title, size=(400,200))
这将消除每次程序运行时调整大小的问题。