StaticBoxSizer的使用

本文介绍了StaticBoxSizer的使用,强调不应将GridBagSizer的布局概念混淆到StaticBoxSizer中。通过实例运行,帮助读者掌握StaticBoxSizer各参数的含义,并推荐查阅相关前几篇博客进行深入学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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布局,各个参数的含义大家可以去查前几个博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值