wxPython – FlexiGridSizer

wxPython – FlexiGridSizer

这个编辑器也有一个二维的网格。然而,它在单元格中的控件布局方面提供了更多的灵活性。虽然同一行的所有控件都有相同的高度,同一列的所有控件都有相同的宽度,但每个单元格的大小并不像GridSizer那样统一。

通过AddGrowableRow()和AddGrowableCol()方法,单列/行中的单元格的宽度和/或高度可以被允许扩展。

wx.FlexiGridSizer 类的构造函数需要四个参数 –

Wx.FlexiGridSizer(rows, cols, vgap, hgap)

以下是对wx.FlexiGridSizer的主要方法的简要描述。

S.N. 方法和描述
1 AddGrowableCol() 如果有额外的高度,指定一个给定索引的列来增长。
2 AddGrowRow() 如果有额外的宽度,指定一个给定索引的行来增长。
3 SetFlexibleDirection() 指定izer的灵活性是否影响到行、列或两者。

例子

用下面的代码设计了一个双列的表格。第一列包含标签,第二列包含文本框。第二列被设置为可增长。同样地,第三行也被设置为可增长的。(注意,行索引和列索引从0开始)。AddGrowableCol()和AddGrowableRow()函数中的第二个参数是增长比例。

fgs.AddGrowableRow(2, 1) 
fgs.AddGrowableCol(1, 1)

整个代码如下-

import wx

class Example(wx.Frame): 

   def __init__(self, parent, title): 
      super(Example, self).__init__(parent, title = title, size = (300, 250)) 

      self.InitUI()
      self.Centre() 
      self.Show()      

   def InitUI(self): 
      panel = wx.Panel(self)

      hbox = wx.BoxSizer(wx.HORIZONTAL)

      fgs = wx.FlexGridSizer(3, 2, 10,10)

      title = wx.StaticText(panel, label = "Title") 
      author = wx.StaticText(panel, label = "Name of the Author") 
      review = wx.StaticText(panel, label = "Review")

      tc1 = wx.TextCtrl(panel) 
      tc2 = wx.TextCtrl(panel) 
      tc3 = wx.TextCtrl(panel, style = wx.TE_MULTILINE)

      fgs.AddMany([(title), (tc1, 1, wx.EXPAND), (author),  
         (tc2, 1, wx.EXPAND), (review, 1, wx.EXPAND), (tc3, 1, wx.EXPAND)])  
      fgs.AddGrowableRow(2, 1) 
      fgs.AddGrowableCol(1, 1)  
      hbox.Add(fgs, proportion = 2, flag = wx.ALL|wx.EXPAND, border = 15) 
      panel.SetSizer(hbox) 

app = wx.App() 
Example(None, title = 'FlexiGrid Demo') 
app.MainLoop()

上述代码产生的输出结果如下 —

wxPython - FlexiGridSizer

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程