第8天 | 25天学会wxPython,FlexGridSizer布局

以行和列二维表格方式排版组件的布局管理器,还有wx.FlexGridSizer,它比GridSizer更灵活一些,wx.GridSizer的单元格大小都一样,而wx.FlexGridSizer的单元格仅限制每行的单元格高度一致、每列的单元格宽度一致,但无需所有行列的宽高一致。它的语法为:

fgs=wx.FlexGridSizer(rows=1, cols=0, vgap=0, hgap=0)
fgs.AddMany(self, items)

rows定义行数,cols定义列数,vgap指定垂直方向上的行间距,hgap指定水平方向上的列间距。

程序清单:flexGridSizer.py

import wx


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

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

    def init_ui(self):
        v_box = wx.BoxSizer(wx.VERTICAL)
        fgs = wx.FlexGridSizer(4, 2, 9, 25)
        name = wx.StaticText(self, label="客户名称")
        name_input = wx.TextCtrl(self)
        address = wx.StaticText(self, label="收货地址")
        address_input = wx.TextCtrl(self)
        remark = wx.StaticText(self, label="备注信息")
        remark_input = wx.TextCtrl(self, style=wx.TE_MULTILINE)
        # 按钮
        submit_btn = wx.Button(self, label="确定", size=(80, 80))
        cancel_btn = wx.Button(self, label="取消", size=(80, 80))
        fgs.AddMany([(name, 0), (name_input, 1, wx.EXPAND),
                     (address, 0), (address_input, 1, wx.EXPAND),
                     (remark, 1, wx.EXPAND), (remark_input, 1, wx.EXPAND),
                     (submit_btn, 0, wx.ALIGN_RIGHT), (cancel_btn, 0, wx.ALIGN_LEFT)])
        fgs.AddGrowableRow(2, 1)  # 指定第3行适配屏幕大小
        fgs.AddGrowableCol(1, 1)  # 指定第2列适配屏幕大小
        v_box.Add(fgs, proportion=1, flag=wx.ALL | wx.EXPAND, border=10)
        self.SetSizer(v_box)
        self.SetTitle("FlexGridSizer布局")
        self.Centre()
        self.Show(True)


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


if __name__ == "__main__":
    main()

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

第8天 | 25天学会wxPython,FlexGridSizer布局

网格布局中的AddGrowableRow(idx,proportion=0)方法,指定要自动适配屏幕大小的行,AddGrowableCol(idx, proportion=0) 指定要自动适配屏幕大小的列。注意:被指定的行或列,需要添加wx.EXPAND标记才有效。

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值