wxPython各个布局的简单案例

一、绝对布局

panel = wx.Panel(self.frame)

panel1 = wx.Panel(panel,pos=(0,0), size=(250, wx.EXPAND))  #设置宽度为250,高度撑满;并且起点为之为(0,0)
panel1.SetBackgroundColour("yellow")
panel2 = wx.Panel(panel,pos=(255,0), size=(wx.EXPAND, wx.EXPAND))  #设置宽度和高度都撑满
panel2.SetBackgroundColour("green")

 运行结果如下(其他部分代码省略,只给出了主题部分pannel的布局代码):

二、使用Sizer来进行布局

Sizer布局包含以下几类布局管理器:

参考地址:

https://docs.wxwidgets.org/stable/classwx_sizer.html

http://xoomer.virgilio.it/infinity77/wxPython/Widgets/wx.Sizer.html

BoxSizer,可设置水平或垂直布局,当控件超出窗体后不会自动换行:

    def createPanel3(self):
        # 创建面板
        panel = wx.Panel(self.frame)

        vbox = wx.BoxSizer(wx.VERTICAL)   #设置水平方向布局

        but1 = wx.Button(panel,wx.ID_ANY,"button1")
        but2 = wx.Button(panel, wx.ID_ANY, "button2")
        but3 = wx.Button(panel, wx.ID_ANY, "button3")
        but4 = wx.Button(panel, wx.ID_ANY, "button4")
        but5 = wx.Button(panel, wx.ID_ANY, "button5")
        but6 = wx.Button(panel, wx.ID_ANY, "button6")
        but7 = wx.Button(panel, wx.ID_ANY, "button7")
        but8 = wx.Button(panel, wx.ID_ANY, "button8")
        but9 = wx.Button(panel, wx.ID_ANY, "button9")
        but10 = wx.Button(panel, wx.ID_ANY, "button10")


        vbox.Add(but1)
        vbox.Add(but2,flag=wx.ALIGN_CENTER)  #设置相对于窗口居中对齐
        vbox.Add(but3)
        vbox.Add(but4)
        vbox.Add(but5)
        vbox.Add(but6)
        vbox.Add(but7)
        vbox.Add(but8)
        vbox.Add(but9)
        vbox.Add(but10)
        panel.SetSizer(vbox)

运行结果:

StaticBoxSizer,在BoxSizer外面加了一个静态的边框以及标签,他可以独立的存在也可以放到其他布局管理器中进行嵌套:

        panel = wx.Panel(self.frame)

        vbox = wx.BoxSizer(wx.VERTICAL)
        Svbox = wx.StaticBoxSizer(wx.VERTICAL,panel,"StaticBoxSizer布局")  # 设置水平方向布局
        vbox.Add(Svbox)  #将StaticBoxSizer嵌套到BoxSizer中

        but1 = wx.Button(panel, wx.ID_ANY, "button1")
        but2 = wx.Button(panel, wx.ID_ANY, "button2")
        but3 = wx.Button(panel, wx.ID_ANY, "button3")
        but4 = wx.Button(panel, wx.ID_ANY, "button4")
        Svbox.Add(but1)
        Svbox.Add(but2)  # 设置相对于窗口居中对齐
        Svbox.Add(but3)
        Svbox.Add(but4)
        panel.SetSizer(vbox)

运行结果:

FlexGridSizer,网格布局,特点是可以设置网格之间的显示比例:

        panel = wx.Panel(self.frame)
        fgs = wx.FlexGridSizer(1, 2, 0, 5)  #设置为1行,2列,列间距为5

        panel1 = wx.Panel(panel, size=(0, wx.EXPAND))
        panel1.SetBackgroundColour("yellow")
        panel2 = wx.Panel(panel, size=(0, wx.EXPAND))
        panel2.SetBackgroundColour("green")

        fgs.Add(panel1, 0, wx.EXPAND)
        fgs.Add(panel2, 0, wx.EXPAND)
        fgs.AddGrowableCol(0, 1)     #指定第一列占1/3的宽度
        fgs.AddGrowableCol(1, 2)     #指定第二列占2/3的宽度
        panel.SetSizer(fgs)

运行结果:

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值