import wx
class MainFrame(wx.Frame):
def __init__(self, *args, **kwargs):
super(MainFrame, self).__init__(*args, **kwargs)
self.init_ui()
def init_ui(self):
menu_bar = wx.MenuBar()
menu_file = wx.Menu()
menu_edit=wx.Menu()
####菜单栏
self.CJ1=menu_file.Append(1,'事件1')
self.CJ2=menu_file.Append(2,'事件2')
menu_bar.Append(menu_file,'&开始')
self.end=menu_edit.Append(3,'结束')
self.Bind(wx.EVT_MENU,self.on_end,self.end)
menu_bar.Append(menu_edit,'&Help')
self.SetMenuBar(menu_bar)
self.SetWindowStyle(style=wx.MINIMIZE_BOX | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX)
self.SetSize((470, 720))
self.SetTitle('小小界面')
self.Centre()
# 背景图片
# # panel=wx.Panel(self)
# background_img = 'image.jpg'
# to_bmp_image = wx.Image(background_img, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
# self.bitmap = wx.StaticBitmap(self, -1, to_bmp_image, (0, 0))
#布局处理
panel=wx.Panel(self)
sizer = wx.GridBagSizer(4, 4)
#事件1
button1 = wx.Button(panel,-1, label="场景1",size=(120, 60))
sizer.Add(button1, pos=(0, 0),
flag=wx.ALL, border=10)
button2 = wx.Button(panel,-1, label="参数",size=(40, 20))
sizer.Add(button2, pos=(0, 2),span=(1,1),
flag=wx.ALL, border=5)
line = wx.StaticLine(panel)
sizer.Add(line, pos=(1, 0), span=(1, 5),
flag=wx.EXPAND | wx.BOTTOM, border=10)
#事件2
button3 = wx.Button(panel,-1, label="场景2",size=(120, 60))
sizer.Add(button3, pos=(2, 0),
flag=wx.ALL, border=10)
button4 = wx.Button(panel,-1, label="参数",size=(40, 20))
sizer.Add(button4, pos=(2, 2),span=(1,1),
flag=wx.ALL, border=5)
line = wx.StaticLine(panel)
sizer.Add(line, pos=(3, 0), span=(1, 5),
flag=wx.EXPAND | wx.BOTTOM, border=10)
#事件3
button5 = wx.Button(panel,-1, label="场景3",size=(120, 60))
sizer.Add(button5, pos=(4, 0),
flag=wx.ALL, border=10)
button6 = wx.Button(panel,-1, label="参数",size=(40, 20))
sizer.Add(button6, pos=(4, 2),span=(1,1),
flag=wx.ALL, border=5)
line = wx.StaticLine(panel)
sizer.Add(line, pos=(5, 0), span=(1, 5),
flag=wx.EXPAND | wx.BOTTOM, border=10)
#事件4
button7 = wx.Button(panel,-1, label="场景2",size=(120, 60))
sizer.Add(button7, pos=(6, 0),
flag=wx.ALL, border=10)
button8 = wx.Button(panel,-1, label="参数",size=(40, 20))
sizer.Add(button8, pos=(6, 2),span=(1,1),
flag=wx.ALL, border=5)
#水平横线
line = wx.StaticLine(panel)
sizer.Add(line, pos=(7, 0), span=(1, 5),
flag=wx.EXPAND | wx.BOTTOM, border=10)
#边框
sbox = wx.StaticBox(panel, -1, '场景')
sboxSizer = wx.StaticBoxSizer(sbox, wx.VERTICAL)
hbox = wx.BoxSizer(wx.HORIZONTAL)
Button9 = wx.Button(panel, -1, label="运行", size=(120, 60))
hbox.Add(Button9, 0, wx.ALL|wx.LEFT, 10)
Button10 = wx.Button(panel, -1, label="参数", size=(40, 20))
hbox.Add(Button10, 0, wx.ALL|wx.LEFT, 10)
sboxSizer.Add(hbox, 0, wx.ALL | wx.LEFT, 10)
sizer.Add(sboxSizer, pos=(8, 0), span=(1, 5),
flag=wx.ALL , border=10)
panel.SetSizer(sizer)
#绑定的on_end事件
def on_end(self, event):
self.Close()
def main():
app = wx.App()
main_frame=MainFrame(None)
main_frame.Show()
app.MainLoop()
if __name__ == '__main__':
main()
可以跑着运行一下
#边框
sbox = wx.StaticBox(panel, -1, '场景')
sboxSizer = wx.StaticBoxSizer(sbox, wx.VERTICAL)
hbox = wx.BoxSizer(wx.HORIZONTAL)
Button9 = wx.Button(panel, -1, label="运行", size=(120, 60))
hbox.Add(Button9, 0, wx.ALL|wx.LEFT, 10)
Button10 = wx.Button(panel, -1, label="参数", size=(40, 20))
hbox.Add(Button10, 0, wx.ALL|wx.LEFT, 10)
sboxSizer.Add(hbox, 0, wx.ALL | wx.LEFT, 10)
麻烦的是这里,大家不要把GridBagSizer布局的想法带到以上代码里,这块代码用的是StaticBox布局,各个参数的含义大家可以去查前几个博客