下面是python演示版的修订版,这样一切都会增长。
每个项都需要EXPAND标志,它的展开程度根据您告诉它的行数和列数而变化。在这里,我让一切都成长起来。在#!/usr/bin/env python
"""
A simple test of the GridBagSizer
http://wiki.wxpython.org/index.cgi/WriteItYourself
"""
import wx
class MyFrame(wx.Frame):
def __init__(self, parent, ID, title):
wx.Frame.__init__(self, parent, ID, title, wx.DefaultPosition)
Buttons = []
for i in range(6):
Buttons.append(wx.Button(self,-1, "Button %i"%(i)))
sizer = wx.GridBagSizer(9, 9)
sizer.Add(Buttons[0], (0, 0), (1,1), wx.EXPAND)
sizer.Add(Buttons[1], (1, 1), (1,7), wx.EXPAND)
sizer.Add(Buttons[2], (6, 6), (3,3), wx.EXPAND)
sizer.Add(Buttons[3], (3, 0), (1,1), wx.EXPAND)
sizer.Add(Buttons[4], (4, 0), (1,1), wx.EXPAND)
sizer.Add(Buttons[5], (5, 0), (1,1), wx.EXPAND)
sizer.AddGrowableRow(0)
sizer.AddGrowableRow(1)
sizer.AddGrowableRow(2)
sizer.AddGrowableRow(3)
sizer.AddGrowableRow(4)
sizer.AddGrowableRow(5)
sizer.AddGrowableRow(6)
sizer.AddGrowableRow(7)
sizer.AddGrowableRow(8)
sizer.AddGrowableRow(9)
sizer.AddGrowableCol(0)
sizer.AddGrowableCol(1)
sizer.AddGrowableCol(2)
sizer.AddGrowableCol(3)
sizer.AddGrowableCol(4)
sizer.AddGrowableCol(5)
sizer.AddGrowableCol(6)
sizer.AddGrowableCol(7)
sizer.AddGrowableCol(8)
sizer.AddGrowableCol(9)
self.SetSizerAndFit(sizer)
self.Centre()
class MyApp(wx.App):
def OnInit(self):
frame = MyFrame(None, -1, "wx.gridbagsizer.py")
frame.Show(True)
self.SetTopWindow(frame)
return True
if __name__ == "__main__":
app = MyApp(0)
app.MainLoop()
请注意,除了sizer.AddGrowableRow(0)之外,您还可以使用比例标志,如sizer.AddGrowableRow(0,1)中所示,但是事情开始变得异常!
很遗憾我找不到一个sizer.AddGrowableRow(wx.ALL)变体,也许其他人可以帮上忙,因为它看起来很难看,每一个都声明。
在代码中,您已经声明了网格大小器为4行4列,但后来您将可增长行和列声明为4x4网格之外。实际上,您还声明x应该位于(5,5)。
它似乎不在乎,它只会插入项,但随后的指令会被忽略,我知道它会允许您在声明的网格边界之外声明growtablerows,而不会有任何抱怨。在