Sizer布局组件2

来源:互联网 发布:windows api常用函数 编辑:程序博客网 时间:2024/06/06 14:23

grid bag sizer布局提供了更强大的布局能力。grid bag sizer能够将某个控件添加到待定的单元格。并且能够使该控件跨行、列显示,类似于html中span标签。


import wxclass BagSizerFrame(wx.Frame):    def __init__(self):        wx.Frame.__init__(self, None, -1, u"布局管理器-bagSizer", size = (405, 160))        panel = wx.Panel(self, -1)        sizer = wx.GridBagSizer(hgap=5, vgap=5)#创建GridBagSizer类型的布局,组件之间水平距离和垂直距离均为5        colorList = [u'红', u'蓝', u'绿']        #sizer = wx.FlexGridSizer(rows = 3, cols=3, hgap=5, vgap=5)        #btn = []        col = 0        for color in colorList:            #btn.append(wx.Button(panel, -1, color))            btn = wx.Button(panel, -1, color)  #通过循环添加3个按钮            sizer.Add(btn, pos=(0, col))  #并将3个按钮添加到布局中,            col = col + 1   #使得三个按钮的行值为0,列值分别为0,1,2        btn = wx.Button(panel, -1, u'紫')        # 新的控件占用了布局管理器中已有控件的位置,将编译出错        sizer.Add(btn, pos=(1, 0), span=(1, 3), flag=wx.EXPAND)#span=(1, 3)表示按钮占据一行3列        btn = wx.Button(panel, -1, u'白')        sizer.Add(btn, pos=(0, col + 1), span=(2, 1), flag=wx.EXPAND)  #flag=wx.EXPAND表示按钮按一定方向增量排列        btn = wx.Button(panel, -1, u'黄')        sizer.Add(btn, pos=(2, 0), span=(1, 2), flag=wx.EXPAND)        btn = wx.Button(panel, -1, u'黑')        sizer.Add(btn, pos=(2, 2), span=(1, 1), flag=wx.EXPAND)#pos=(2, 2)表示按钮在三行三列,因为坐标是从0开始        panel.SetSizer(sizer)        panel.Fit()if __name__ == '__main__':    app = wx.PySimpleApp()    frame = BagSizerFrame()    frame.Show()    app.MainLoop()

结果


box Sizer布局:

布局管理器中最简单、最灵活的一种布局。box Sizer布局可以嵌套使用。水平排列布局可以嵌套水平或者垂直排列的布局。

import wxclass GridSizerFrame(wx.Frame):    def __init__(self):        wx.Frame.__init__(self, None, -1, u"布局管理器-boxSizer", size = (500, 80))        panel = wx.Panel(self, -1)        sizer = wx.BoxSizer(wx.HORIZONTAL)                    # 水平对齐的BoxSizer        colorList = [u'红', u'蓝', u'绿', u'黄', u'黑', u'紫', u'白']        for color in colorList:            btn = wx.Button(panel, -1, color)            sizer.Add(btn, 0, 0)                              # 把控件添加到布局管理器中        panel.SetSizer(sizer)        panel.Fit()if __name__ == '__main__':    app = wx.PySimpleApp()    frame = GridSizerFrame()    frame.Show()    app.MainLoop()
结果








0 0
原创粉丝点击