美文网首页
布局管理器

布局管理器

作者: wangyu2488 | 来源:发表于2019-12-23 09:13 被阅读0次

    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.png
    import 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()  # 进入主事件循环
    
    

    相关文章

      网友评论

          本文标题:布局管理器

          本文链接:https://www.haomeiwen.com/subject/faponctx.html