分享

wxPython frame的布局详细解释(二)

 昵称QAb6ICvc 2013-02-19
3. wx.GridBagSizer()该类是wx.FlexGridSizer()的子类,它具有其父类的方法与属性,当然,它使用时比其父类更简单了。它不需要指定特定的行数与列数,完整根据它所管理的构件设置具体而定的。

原型:

 
  1. #构造函数  
  2. __init__(self, vgap=0, hgap=0)  
  3. (Constructor)  
  4.   
  5. Constructor, with optional parameters to specify the gap between the rows and columns.  
  6.   
  7.     Parameters:  
  8.         vgap  
  9.                    (type=int)  
  10.   
  11.         hgap  
  12.                    (type=int)  
  13.   
  14. #添加单个构件到boxsizer  
  15. # pos 表示的单元格的点(cell position可以看做是坐标)  
  16. # span 表示的单个或合并的单元格  
  17. Add(self, item, pos, span=DefaultSpan, flag=0, border=0, userData=None)  
  18.   
  19. Adds an item to the sizer at the grid cell pos, optionally spanning more than one row or column as specified with span. The remaining args behave similarly to wx.Sizer.Add.  
  20.   
  21. Returns True if the item was successfully placed at the given cell position, False if something was already there.  
  22.   
  23.     Parameters:  
  24.         pos  
  25.                    (type=GBPosition)  
  26.   
  27.         span  
  28.                    (type=GBSpan)  
  29.   
  30.         flag  
  31.                    (type=int)  
  32.   
  33.         border  
  34.                    (type=int)  
  35. .  
  36. .  
  37. .  
  38. (原文: http://www./docs/api/wx.GridBagSizer-class.html)  

实例3:

 
  1. def __init__(self, parent):  
  2.         wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)  
  3.         wred = wx.TextCtrl(self, wx.NewId(), 'red')  
  4.         wwhite = wx.TextCtrl(self, wx.NewId(), 'white')  
  5.         wblue = wx.TextCtrl(self, wx.NewId())  
  6.         wcyan = wx.TextCtrl(self, wx.NewId())  
  7.           
  8.         vgap, hgap = 1020  
  9.         gbs = wx.GridBagSizer(vgap, hgap)  
  10.           
  11.         b = 0  
  12.         # Add(self, item, pos, span=DefaultSpan, flag=0, border=0, userData=None)  
  13.         # pos (type=GBPosition) cell position  
  14.         # span(type=GBSPan)   
  15.         gbs.Add(wred, (11), (11), wx.EXPAND | wx.ALL, b)  
  16.         gbs.Add(wwhite, (23), (11), wx.EXPAND | wx.ALL, b)  
  17.         gbs.Add(wblue, (10), (11), wx.EXPAND | wx.ALL, b)  
  18.         gbs.Add(wcyan, (00), (11), wx.EXPAND | wx.ALL, b)  
  19.           
  20.         gbs.AddGrowableRow(0) # 0/1/2...表示的行号或列号  
  21.         gbs.AddGrowableRow(1)  
  22.         gbs.AddGrowableRow(2)  
  23.         gbs.AddGrowableCol(0)  
  24.         gbs.AddGrowableCol(1)  
  25.         gbs.AddGrowableCol(3)  
  26.           
  27.         self.SetSizer(gbs)  

Note: 实例3中就表示形成了一个三行四列的虚拟表格(如果再添加一个gbs.Add(item, (4, 6), (1, 1) ....)那么它就是五行七列的).AddGrowableRow()与AddGrowable()表示指定的idx行或指定的idx列伸缩.


4. wx.StaticBoxSizer() 此使用方法与wx.BoxSizer()基本相同,就不多说。

   (原型: http://www./docs/api/wx.StaticBoxSizer-class.html)


总结: wxPython进行布局定位,我现在就学习了这四种方法,至于其他的方法,以后学习了再补充完整。在实际的运用中,不能单靠某一种方法,往往是多种方法配合使用,才能发挥所长,使代码更简洁,界面更美观等等.以上纯属个人观点,有些说法或写法不准确之处,还望指教,多谢!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多