• wxpython布局管理部件wx.gridbagsizer用法示例


    text = ("This is text box")
            panel = wx.Panel(self, -1)
            chkAll1 = wx.CheckBox(panel, ID_CHKBOX_CAN_SEL_ALL, u'全选')       
            chkKnown = wx.CheckBox(panel, ID_CHKBOX_CAN_UNKNOWN, u'不会')
            chkUnknow = wx.CheckBox(panel, ID_CHKBOX_CAN_KNOWN, u'会')

            chkAll2 = wx.CheckBox(panel, ID_CHKBOX_SEGMENT_SEL_ALL, u'全选')
            chkChuzhong = wx.CheckBox(panel, ID_CHKBOX_SEGMENT_SEL_CHUZHONG, u'初中')
            chkCollegue = wx.CheckBox(panel, ID_CHKBOX_SEGMENT_SEL_DAXUE, u'大学')
            chkCollegueCet6 = wx.CheckBox(panel, ID_CHKBOX_SEGMENT_SEL_DAXUE_CET6, u'大学六级')

            #lst = wx.ListCtrl(panel, ID_LIST_RECITE, style=wx.LC_REPORT|wx.LC_VIRTUAL|wx.LC_HRULES|wx.LC_VRULES)
            self.lst = ReciteListCtrl(panel, ID_LIST_RECITE)

            sz1 = wx.GridSizer(rows=2, cols=4, vgap=5, hgap=20)
            sz1.Add(chkAll1)
            sz1.Add(chkKnown)
            sz1.Add(chkUnknow)
            sz1.Add(wx.TextCtrl(panel))

            sz1.Add(chkAll2)
            sz1.Add(chkChuzhong)
            sz1.Add(chkCollegue)
            sz1.Add(chkCollegueCet6)

            sz0 = wx.BoxSizer(wx.VERTICAL)
            sz0.Add(sz1)
            sz0.Add(self.lst, 1, wx.EXPAND)
            panel.SetSizer(sz0)

    wxpython布局管理部件wx.gridbagsizer用法示例

    转自:http://www.jbxue.com/python/29629.htm

    wxpython中布局管理wx.gridbagsizer部件的用法,wx.gridbagsizer实现对部件的显式定位,部件项目还可以跨越行或列,一起学习下。

    wxPython 中最复杂的 sizer.
    它带来了对部件的显式定位. 部件项目还可以跨越行或列.  专题教程:wxpython中文教程

    wx.GridBagSizer 的构造器是十分简单的。
    wx.GridBagSizer (integer vgap, integer hgap)
    垂直和水平空白 (gap) 定义了子部件之间的空白距离. 通过 Add() 方法向网格里添加部件项目.
    Add(self, item, tuple pos, tuple span=wx.DefaultSpan, integer flag=0,
        integer border=0, userData=None)
    “item” 指你要插入到网格中的部件. “pos” 指定虚拟网格的位置. 左上单元格的 “pos” 值为(0, 0).“span” 是一个对应部件的跨度值. 比如(3, 2)指一个部件要跨越 3 行 2 列. “flag” 和 “border” 两个参数在早前的 wx.BoxSizer 中已经讨论了.
    网格中的这些部件项目可以随窗口缩放而改变其大小,也可以保持不变.

    如果需要部件变大或缩小,可以使用这两个方法.
    AddGrowableRow(integer row)
    AddGrowableCol(integer col)

    例子:

    复制代码代码示例:

    #!/usr/bin/python
    #coding=utf-8

    #wxgridbagsizer.py

    import wx

    class MyFrame(wx.Frame):
        def __init__(self,parent, id, title):
            wx.Frame.__init__(self, parent, id, title, wx.DefaultPosition)
            sizer = wx.GridBagSizer(9, 9)
            sizer.Add(wx.Button(self, -1, "按钮1"), (0, 0), wx.DefaultSpan,
                      wx.ALL, 5)
            sizer.Add(wx.Button(self, -1, "按钮2"), (1, 1), (1, 7), wx.EXPAND)
            sizer.Add(wx.Button(self, -1, "按钮3"), (6, 6), (3, 3), wx.EXPAND)
            sizer.Add(wx.Button(self, -1, "按钮4"), (3, 0), (1, 1),
                      wx.ALIGN_CENTER)
            sizer.Add(wx.Button(self, -1, "按钮5"), (4, 0), (1, 1),
                      wx.ALIGN_LEFT)
            sizer.Add(wx.Button(self, -1, "按钮6"), (5, 0), (1, 1),
                      wx.ALIGN_RIGHT)
            sizer.AddGrowableRow(6)
            sizer.AddGrowableCol(6)
            self.SetSizerAndFit(sizer)
            self.Centre()
    class MyApp(wx.App):
        def OnInit(self):
            frame = MyFrame(None, -1, 'wxgridbagsizer.py')
            frame.Show(True)
            return True
    app = MyApp(0)
    app.MainLoop()

    要实现部件跨越多于一个的单元格,必须要提供 wx.EXPAND 标志。
    self.SetSizerAndFit(sizer)
    这方法跟 SetSizer() 差不多,此外它将把大小通告给窗口,以确保所有按钮都将显示在窗口上。

  • 相关阅读:
    2019gdcpc
    STL容器
    C. Neko does Maths
    19年天梯赛总结
    初识事物处理
    Mybatis和spring整合
    build path导入的jar失效导致找不到类
    整合mybatis和spring时 Error creating bean with name 'sqlSessionFactory' defined in class path resource
    了解并使用springAOP(面向切面编程)
    aop配置问题引发的报错
  • 原文地址:https://www.cnblogs.com/zhang-pengcheng/p/4929018.html
Copyright © 2020-2023  润新知