鍍金池/ 教程/ Python/ wxPython GridBagSizer布局
wxPython GUI構(gòu)建工具wxFormBuilder
wxPython StaticText類
WxPython教程
wxPython可??看翱?/span>
wxPython ComboBox & Choice類
wxPython FlexiGridSizer布局
wxPython入門(Hello World)
wxPython RadioButton & RadioBox類
wxPython拖放
wxPython HTMLWindow類
wxPython ToolBar類
wxPython GridBagSizer布局
wxPython Dialog類
wxPython布局管理
wxPython TextCtrl類
wxPython開發(fā)環(huán)境安裝
wxPython Slider類
wxPython CheckBox類
wxPython Major類
wxPython GridSizer布局
wxPython事件處理
wxPython SplitterWindow類
Menu Item, Menu & MenuBar類
wxPython Button控件
wxPython StaticBoxSizer布局
wxPython Guage類
wxPython Frame類
wxPython多文檔界面
wxPython Panel類
wxPython BoxSizer布局
wxPython繪圖API

wxPython GridBagSizer布局

GridBagSizer是一種多功能大小測定器。它比FlexiGridSizer提供了更多的增強功能。子構(gòu)件可被添加到網(wǎng)格中的特定單元。此外,一個子物件可以在水平和/或垂直地占據(jù)一個以上的單元。 因此,在同一行中的靜態(tài)文本和多行文本控件可以有不同的寬度和高度。
網(wǎng)格包布局應(yīng)通過確定位置,跨度和差距進(jìn)行精心策劃。 wx.GridBagSizer類只有一個構(gòu)造函數(shù)接受兩個參數(shù)。
Wx.GridBagSizer(vgap,hgap) 

GridBagsizer類的最重要的方法是Add(),它接受位置作為強制性參數(shù)。 跨度,對齊方式,邊界標(biāo)志和邊框尺寸參數(shù)是可選的。如果沒有明確使用則使用默認(rèn)值。

Wx.GridbagSizer().Add(control, pos, span, flags, border)
下表列出GridBagSizer類的方法 -
S.N.
方法和說明
1

Add()

在網(wǎng)格中的指定位置增加給定控件
2

GetItemPosition()

返回在網(wǎng)格的控件的位置
3

SetItemPosition()

在網(wǎng)格中的指定位置放置一個控件
4

GetItemSpan()

返回一個項目的行/列跨越
5

SetItemSpan()

跨越指定的項目超過行/列數(shù)

以下代碼顯示,其中有與文本框(TexCtrl)相關(guān)聯(lián)的標(biāo)簽(靜態(tài)文本)的表單。用指定跨度的參數(shù)添加TextCtrl對象。 因此,文本框的寬度跨越多個列。對于名稱文本框中跨越了兩列。

tc = wx.TextCtrl(panel) 
sizer.Add(tc, pos = (0, 1), span = (1, 2), flag = wx.EXPAND|wx.ALL, border = 5)
文本框的地址是一個多行文本控件跨越了三列。
tc1 = wx.TextCtrl(panel,style = wx.TE_MULTILINE) 
sizer.Add(tc1, pos = (1,1), span = (1, 3), flag = wx.EXPAND|wx.ALL, border = 5)
如果窗體拉伸成為可增長,包含用于描述多行文本控件行被設(shè)置為使得它擴展垂直向下。
tc4 = wx.TextCtrl(panel,style = wx.TE_MULTILINE) 
sizer.Add(tc4, pos = (3,1), span = (1,3), flag = wx.EXPAND|wx.ALL, border = 5)
sizer.AddGrowableRow(3)
下面是完整的代碼 -
import wx  

class Example(wx.Frame): 
   
   def __init__(self, parent, title): 
      super(Example, self).__init__(parent, title = title) 
             
      self.InitUI() 
      self.Centre() 
      self.Show()      
         
   def InitUI(self): 
       
      panel = wx.Panel(self) 
      sizer = wx.GridBagSizer(0,0)
		
      text = wx.StaticText(panel, label = "Name:") 
      sizer.Add(text, pos = (0, 0), flag = wx.ALL, border = 5)
		
      tc = wx.TextCtrl(panel) 
      sizer.Add(tc, pos = (0, 1), span = (1, 2), flag = wx.EXPAND|wx.ALL, border = 5) 
         
      text1 = wx.StaticText(panel, label = "address") 
      sizer.Add(text1, pos = (1, 0), flag = wx.ALL, border = 5) 
		
      tc1 = wx.TextCtrl(panel,style = wx.TE_MULTILINE) 
      sizer.Add(tc1, pos = (1,1), span = (1, 3), flag = wx.EXPAND|wx.ALL, border = 5) 
         
      text2 = wx.StaticText(panel,label = "age") 
      sizer.Add(text2, pos = (2, 0), flag = wx.ALL, border = 5) 
		
      tc2 = wx.TextCtrl(panel) 
      sizer.Add(tc2, pos = (2,1), flag = wx.ALL, border = 5) 
		
      text3 = wx.StaticText(panel,label = "Mob.No") 
      sizer.Add(text3, pos = (2, 2), flag = wx.ALIGN_CENTER|wx.ALL, border = 5)
		
      tc3 = wx.TextCtrl(panel) 
      sizer.Add(tc3, pos = (2,3),flag = wx.EXPAND|wx.ALL, border = 5) 
         
      text4 = wx.StaticText(panel, label = "Description") 
      sizer.Add(text4, pos = (3, 0), flag = wx.ALL, border = 5) 
		
      tc4 = wx.TextCtrl(panel,style =  wx.TE_MULTILINE) 
      sizer.Add(tc4, pos = (3,1), span = (1,3), flag = wx.EXPAND|wx.ALL, border = 5) 
      sizer.AddGrowableRow(3) 
         
      buttonOk = wx.Button(panel, label = "Ok") 
      buttonClose = wx.Button(panel, label = "Close" ) 
		
      sizer.Add(buttonOk, pos = (4, 2),flag = wx.ALL, border = 5) 
      sizer.Add(buttonClose, pos = (4, 3), flag = wx.ALL, border = 5)
		
      panel.SetSizerAndFit(sizer)
		
app = wx.App() 
Example(None, title = 'GridBag Demo - www.yiibai.com') 
app.MainLoop()
上面的代碼產(chǎn)生下面的輸出 -