当前位置: 主页 > JAVA语言

java界面布局-java计算器界面布局

发布时间:2023-06-03 11:10   浏览次数:次   作者:佚名

如果按顺序放置组件,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)

java计算器界面布局_java界面布局_斗鱼直播界面布局模板

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

程序清单:gridBagSizer.py

java界面布局_java计算器界面布局_斗鱼直播界面布局模板

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()

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

java界面布局_java计算器界面布局_斗鱼直播界面布局模板

斗鱼直播界面布局模板_java计算器界面布局_java界面布局

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

java界面布局_java计算器界面布局_斗鱼直播界面布局模板

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

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

java界面布局_斗鱼直播界面布局模板_java计算器界面布局

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

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