第9天 | 25天学会wxPython,GridBagSizer布局

如果按顺序放置组件,wx.GridSizer和wx.FlexGridSizer都可以满足,但在实际应用中,会出现放置在任意一个位置的需求,于是wx.GridBagSizer出现了。wx.GridBagSizer可实现精确定位,还可以实现组件进行跨行或者跨列。它的语法为:

gbs=wx.GridBagSizer(vgap=0, hgap=0)
gbs.Add(self, item, pos, span, flag=0,border=0, userData=None)

pos用元组定义了位置,左上角的位置为(0,0);span用元组实现跨行或跨列,比如(2,2)的span表示让一个组件跨2行和2列。

程序清单:gridBagSizer.py

import wx


# 继承Frame
class GridBagSizer(wx.Frame):

    def __init__(self, *args, **kwargs):
        super(GridBagSizer, self).__init__(*args, **kwargs)
        # 初始化窗口UI
        self.init_ui()

    def init_ui(self):
        gbs = wx.GridBagSizer(5, 5)
        gbs.Add(wx.StaticText(self, label="员工信息"), pos=(0, 0),
                flag=wx.EXPAND | wx.ALL, border=5)
        # 姓名
        gbs.Add(wx.StaticText(self, label="姓名:"), pos=(1, 0),
                flag=wx.ALIGN_RIGHT | wx.ALL, border=5)
        gbs.Add(wx.TextCtrl(self), pos=(1, 1), span=(1, 3),
                flag=wx.EXPAND | wx.ALL, border=5)
        # 地址
        gbs.Add(wx.StaticText(self, label="地址:"), pos=(2, 0),
                flag=wx.ALIGN_RIGHT | wx.ALL, border=5)
        gbs.Add(wx.TextCtrl(self), pos=(2, 1), span=(1, 3),
                flag=wx.EXPAND | wx.ALL, border=5)
        # 年龄
        gbs.Add(wx.StaticText(self, label="年龄:"), pos=(3, 0),
                flag=wx.ALIGN_RIGHT | wx.ALL, border=5)
        gbs.Add(wx.TextCtrl(self, size=(150, -1)), pos=(3, 1),
                flag=wx.ALL, border=5)
        gbs.Add(wx.StaticText(self, label="编号:"), pos=(3, 2),
                flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTRE_VERTICAL)
        gbs.Add(wx.TextCtrl(self, size=(150, -1)), pos=(3, 3),
                flag=wx.ALL, border=5)
        gbs.Add(wx.StaticText(self, label="备注:"), pos=(4, 0),
                flag=wx.ALIGN_RIGHT | wx.ALL, border=5)
        gbs.Add(wx.TextCtrl(self, style=wx.TE_MULTILINE),
                pos=(4, 1), span=(1, 3), flag=wx.EXPAND | wx.ALL, border=5)
        gbs.AddGrowableRow(4)
        gbs.AddGrowableCol(1)
        # 按钮
        submit_btn = wx.Button(self, label="确定")
        cancel_btn = wx.Button(self, label="取消")
        gbs.Add(submit_btn, pos=(5, 2), flag=wx.ALL, border=10)
        gbs.Add(cancel_btn, pos=(5, 3), flag=wx.ALL, border=10)
        self.SetSizer(gbs)
        self.SetSize(900, 500)
        self.SetTitle("GridBagSizer布局")
        self.Centre()
        self.Show(True)


def main():
    app = wx.App(False)
    GridBagSizer(None)
    app.MainLoop()


if __name__ == "__main__":
    main()

运行程序之后,弹出的窗口如下:

第9天 | 25天学会wxPython,GridBagSizer布局

方法AddGrowableRow(3)指定自动适配屏幕大小的行,AddGrowableCol(1)指定适配屏幕小的列,下标都从0开始。

几种布局管理器,没有谁优谁劣的说法,在项目当中,究竟选哪一个,看需求文档中的界面布局要求。实际上,在大多数情况下,会经常混搭使用。

好了,GridBagSizer布局的内容就说到这了,关注我,下一节更精彩。

码字不易,你的关注和转发是对我最大的鼓励,谢谢!

一个当了10年技术总监的老家伙,分享多年的编程经验。想学编程的朋友,关注我,你就赚到了。我正在分享Python、前端、Java和App方面的干货了。赶紧来围观啊!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值