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)
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()
运行程序之后,弹出的窗口如下:
方法AddGrowableRow(3)指定自动适配屏幕大小的行java界面布局java界面布局,AddGrowableCol(1)指定适配屏幕小的列,下标都从0开始。
几种布局管理器,没有谁优谁劣的说法,在项目当中,究竟选哪一个,看需求文档中的界面布局要求。实际上,在大多数情况下,会经常混搭使用。
好了,GridBagSizer布局的内容就说到这了,关注我,下一节更精彩。
码字不易,你的关注和转发是对我最大的鼓励,谢谢!
一个当了10年技术总监的老家伙,分享多年的编程经验。想学编程的朋友,关注我,你就赚到了。我正在分享Python、前端、Java和App方面的干货了。赶紧来围观啊!!!