2019年12月15日
image.png image.png一.Box布局管理器
image.png image.png image.png image.png image.png# coding=utf-8
import wx
# 自定义窗口类MyFrame
class MyFrame(wx.Frame):
def __init__(self):
super().__init__(parent=None, title='Box布局', size=(300, 120))
self.Centre() # 设置窗口居中
panel = wx.Panel(parent=self)
# 创建垂直方向Box布局管理器对象
vbox = wx.BoxSizer(wx.VERTICAL)
self.statictext = wx.StaticText(parent=panel, label='Button1单击')
# 添加静态文本到Box布局管理器
vbox.Add(self.statictext, proportion=2, flag=wx.FIXED_MINSIZE | wx.TOP | wx.CENTER, border=10)
b1 = wx.Button(parent=panel, id=10, label='Button1')
b2 = wx.Button(parent=panel, id=11, label='Button2')
self.Bind(wx.EVT_BUTTON, self.on_click, id=10, id2=20)
# 创建水平方向的Box布局管理器对象
hbox = wx.BoxSizer(wx.HORIZONTAL)
# 添加b1到水平Box布局管理
hbox.Add(b1, 0, wx.EXPAND | wx.BOTTOM, 5)
# 添加b2到水平Box布局管理
hbox.Add(b2, 0, wx.EXPAND | wx.BOTTOM, 5)
# 将水平Box布局管理器到垂直Box布局管理器
vbox.Add(hbox, proportion=1, flag=wx.CENTER)
panel.SetSizer(vbox)
def on_click(self, event):
event_id = event.GetId()
print(event_id)
if event_id == 10:
self.statictext.SetLabelText('Button1单击')
else:
self.statictext.SetLabelText('Button2单击')
class App(wx.App):
def OnInit(self):
# 创建窗口对象
frame = MyFrame()
frame.Show()
return True
if __name__ == '__main__':
app = App()
app.MainLoop() # 进入主事件循环
二.StaticBox布局
image.png# coding=utf-8
import wx
# 自定义窗口类MyFrame
class MyFrame(wx.Frame):
def __init__(self):
super().__init__(parent=None, title='StaticBox布局', size=(300, 120))
self.Centre() # 设置窗口居中
panel = wx.Panel(parent=self)
# 创建垂直方向的Box布局管理器对象
vbox = wx.BoxSizer(wx.VERTICAL)
self.statictext = wx.StaticText(parent=panel, label='Button1单击')
# 添加静态文本到Box布局管理器
vbox.Add(self.statictext, proportion=2, flag=wx.FIXED_MINSIZE | wx.TOP | wx.CENTER, border=10)
b1 = wx.Button(parent=panel, id=10, label='Button1')
b2 = wx.Button(parent=panel, id=11, label='Button2')
self.Bind(wx.EVT_BUTTON, self.on_click, id=10, id2=20)
# 创建静态框对象
sb = wx.StaticBox(panel, label="按钮框")
# 创建水平方向的StaticBox布局管理器
hsbox = wx.StaticBoxSizer(sb, wx.HORIZONTAL)
# 添加b1到水平StaticBox布局管理
hsbox.Add(b1, 0, wx.EXPAND | wx.BOTTOM, 5)
# 添加b2到水平StaticBox布局管理
hsbox.Add(b2, 0, wx.EXPAND | wx.BOTTOM, 5)
# 添加hbox到vbox
vbox.Add(hsbox, proportion=1, flag=wx.CENTER)
panel.SetSizer(vbox)
def on_click(self, event):
event_id = event.GetId()
print(event_id)
if event_id == 10:
self.statictext.SetLabelText('Button1单击')
else:
self.statictext.SetLabelText('Button2单击')
class App(wx.App):
def OnInit(self):
# 创建窗口对象
frame = MyFrame()
frame.Show()
return True
if __name__ == '__main__':
app = App()
app.MainLoop() # 进入主事件循环
三.Grid布局
image.png image.png# coding=utf-8
import wx
# 自定义窗口类MyFrame
class MyFrame(wx.Frame):
def __init__(self):
super().__init__(parent=None, title='Grid布局', size=(300, 300))
self.Centre() # 设置窗口居中
panel = wx.Panel(self)
btn1 = wx.Button(panel, label='1')
btn2 = wx.Button(panel, label='2')
btn3 = wx.Button(panel, label='3')
btn4 = wx.Button(panel, label='4')
btn5 = wx.Button(panel, label='5')
btn6 = wx.Button(panel, label='6')
btn7 = wx.Button(panel, label='7')
btn8 = wx.Button(panel, label='8')
btn9 = wx.Button(panel, label='9')
grid = wx.GridSizer(cols=3, rows=3, vgap=0, hgap=20)
# grid.AddMany([
# (btn1, 0, wx.EXPAND),
# (btn2, 0, wx.EXPAND),
# (btn3, 0, wx.EXPAND),
# (btn4, 0, wx.EXPAND),
# (btn5, 0, wx.EXPAND),
# (btn6, 0, wx.EXPAND),
# (btn7, 0, wx.EXPAND),
# (btn8, 0, wx.EXPAND),
# (btn9, 0, wx.EXPAND)
# ])
grid.Add(btn1, 0, wx.EXPAND)
grid.Add(btn2, 0, wx.EXPAND)
grid.Add(btn3, 0, wx.EXPAND)
grid.Add(btn4, 0, wx.EXPAND)
grid.Add(btn5, 0, wx.EXPAND)
grid.Add(btn6, 0, wx.EXPAND)
grid.Add(btn7, 0, wx.EXPAND)
grid.Add(btn8, 0, wx.EXPAND)
grid.Add(btn9, 0, wx.EXPAND)
panel.SetSizer(grid)
class App(wx.App):
def OnInit(self):
# 创建窗口对象
frame = MyFrame()
frame.Show()
return True
if __name__ == '__main__':
app = App()
app.MainLoop() # 进入主事件循环
四.FlexGrid布局
image.png image.pngimport wx
# 自定义窗口类MyFrame
class MyFrame(wx.Frame):
def __init__(self):
super().__init__(parent=None, title='FlexGrid布局', size=(400, 200))
self.Centre() # 设置窗口居中
panel = wx.Panel(parent=self)
fgs = wx.FlexGridSizer(3, 2, 10, 10)
title = wx.StaticText(panel, label="标题:")
author = wx.StaticText(panel, label="作者名:")
review = wx.StaticText(panel, label="内容:")
tc1 = wx.TextCtrl(panel)
tc2 = wx.TextCtrl(panel)
tc3 = wx.TextCtrl(panel, style=wx.TE_MULTILINE)
fgs.AddMany([title, (tc1, 1, wx.EXPAND),
author, (tc2, 1, wx.EXPAND),
review, (tc3, 1, wx.EXPAND)])
fgs.AddGrowableRow(0, 1)
fgs.AddGrowableRow(1, 1)
fgs.AddGrowableRow(2, 3)
fgs.AddGrowableCol(0, 1)
fgs.AddGrowableCol(1, 2)
hbox = wx.BoxSizer(wx.HORIZONTAL)
hbox.Add(fgs, proportion=1, flag=wx.ALL | wx.EXPAND, border=15)
panel.SetSizer(hbox)
class App(wx.App):
def OnInit(self):
# 创建窗口对象
frame = MyFrame()
frame.Show()
return True
if __name__ == '__main__':
app = App()
app.MainLoop() # 进入主事件循环
网友评论