龙空技术网

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

老陈说编程 850

前言:

当前姐妹们对“javabag”大致比较注重,咱们都想要剖析一些“javabag”的相关知识。那么小编同时在网摘上收集了一些关于“javabag””的相关资讯,希望大家能喜欢,朋友们快快来学习一下吧!

如果按顺序放置组件,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# 继承Frameclass 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()

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

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

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

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

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

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

#python##程序员##好平台好讲师##热搜##头条#

标签: #javabag