下面的程序是对之前的创建的窗口进行进一步改进,即利用布局管理器对窗口进行自动的管理。
在这里,Panel用于创建画布,BoxSizer用于创建管理器,wx.EXPAND表示可以拓展,border表示边界,proportion表示比例,
VERTICAL表示垂直方向布置,LEFT表示左对齐。
代码如下:
#coding:utf8
#利用布局管理器,管理窗口
import wx
app = wx.App()
win = wx.Frame(None, title = "ahuang1900", size = (410,340)) #创建根窗口
bkg = wx.Panel(win) #创建画布
#基于画布来创建主件,这样主件可以置于画布上了
openbutton = wx.Button(bkg, label = "open") #创建主件1
savebutton = wx.Button(bkg, label = "save") #创建主件2
filename = wx.TextCtrl(bkg) #创建主件3
contents = wx.TextCtrl(bkg, style = wx.TE_MULTILINE | wx.HSCROLL) #创建主件4
hbox = wx.BoxSizer() #创建尺寸器1,作用是管理添加在其中的组件布局的位置
#下面是把已经创建好的主件以一定的方式添加到布局管理器1中
hbox.Add(filename, proportion = 1, flag = wx.EXPAND)
hbox.Add(openbutton, proportion = 0, flag = wx.LEFT, border = 5 )
hbox.Add(savebutton, proportion = 0, flag = wx.LEFT, border = 5)
bbox = wx.BoxSizer(wx.VERTICAL) #创建尺寸器2(布局管理器)
#下面是把已经创建好的主件和尺寸器1以一定的方式添加到尺寸器2中
bbox.Add(hbox, proportion = 0, flag = wx.EXPAND | wx.ALL, border = 5)
bbox.Add(contents, proportion = 1, flag = wx.EXPAND | wx.LEFT | wx.BOTTOM | wx.RIGHT
, border = 5)
bkg.SetSizer(bbox) #把尺寸器,放置在画布中(自动设置大小)
win.Show()
app.MainLoop()
运行结果: