# sizer test code
#----------------------------------------------------------------------
-from wxPython.wx import *
-from wxPython.lib.sizers import *
+from wxPython.wx import *
+from wxPython.lib.grids import wxGridSizer, wxFlexGridSizer
#----------------------------------------------------------------------
def makeSimpleBox1(win):
box = wxBoxSizer(wxHORIZONTAL)
- box.Add(wxButton(win, 1010, "one"), 0)
- box.Add(wxButton(win, 1010, "two"), 0)
- box.Add(wxButton(win, 1010, "three"), 0)
- box.Add(wxButton(win, 1010, "four"), 0)
+ box.Add(wxButton(win, 1010, "one"), 0, wxEXPAND)
+ box.Add(wxButton(win, 1010, "two"), 0, wxEXPAND)
+ box.Add(wxButton(win, 1010, "three"), 0, wxEXPAND)
+ box.Add(wxButton(win, 1010, "four"), 0, wxEXPAND)
return box
def makeSimpleBox2(win):
box = wxBoxSizer(wxVERTICAL)
- box.Add(wxButton(win, 1010, "one"), 0)
- box.Add(wxButton(win, 1010, "two"), 0)
- box.Add(wxButton(win, 1010, "three"), 0)
- box.Add(wxButton(win, 1010, "four"), 0)
+ box.Add(wxButton(win, 1010, "one"), 0, wxEXPAND)
+ box.Add(wxButton(win, 1010, "two"), 0, wxEXPAND)
+ box.Add(wxButton(win, 1010, "three"), 0, wxEXPAND)
+ box.Add(wxButton(win, 1010, "four"), 0, wxEXPAND)
return box
def makeSimpleBox3(win):
box = wxBoxSizer(wxHORIZONTAL)
- box.Add(wxButton(win, 1010, "one"), 0)
- box.Add(wxButton(win, 1010, "two"), 0)
- box.Add(wxButton(win, 1010, "three"), 0)
- box.Add(wxButton(win, 1010, "four"), 0)
- box.Add(wxButton(win, 1010, "five"), 1)
+ box.Add(wxButton(win, 1010, "one"), 0, wxEXPAND)
+ box.Add(wxButton(win, 1010, "two"), 0, wxEXPAND)
+ box.Add(wxButton(win, 1010, "three"), 0, wxEXPAND)
+ box.Add(wxButton(win, 1010, "four"), 0, wxEXPAND)
+ box.Add(wxButton(win, 1010, "five"), 1, wxEXPAND)
return box
def makeSimpleBox4(win):
box = wxBoxSizer(wxHORIZONTAL)
- box.Add(wxButton(win, 1010, "one"), 0)
- box.Add(wxButton(win, 1010, "two"), 0)
- box.Add(wxButton(win, 1010, "three"), 1)
- box.Add(wxButton(win, 1010, "four"), 1)
- box.Add(wxButton(win, 1010, "five"), 1)
+ box.Add(wxButton(win, 1010, "one"), 0, wxEXPAND)
+ box.Add(wxButton(win, 1010, "two"), 0, wxEXPAND)
+ box.Add(wxButton(win, 1010, "three"), 1, wxEXPAND)
+ box.Add(wxButton(win, 1010, "four"), 1, wxEXPAND)
+ box.Add(wxButton(win, 1010, "five"), 1, wxEXPAND)
return box
def makeSimpleBox5(win):
box = wxBoxSizer(wxHORIZONTAL)
- box.Add(wxButton(win, 1010, "one"), 0)
- box.Add(wxButton(win, 1010, "two"), 0)
- box.Add(wxButton(win, 1010, "three"), 3)
- box.Add(wxButton(win, 1010, "four"), 1)
- box.Add(wxButton(win, 1010, "five"), 1)
+ box.Add(wxButton(win, 1010, "one"), 0, wxEXPAND)
+ box.Add(wxButton(win, 1010, "two"), 0, wxEXPAND)
+ box.Add(wxButton(win, 1010, "three"), 3, wxEXPAND)
+ box.Add(wxButton(win, 1010, "four"), 1, wxEXPAND)
+ box.Add(wxButton(win, 1010, "five"), 1, wxEXPAND)
return box
#----------------------------------------------------------------------
def makeSimpleBox6(win):
- box = wxBoxSizer(wxHORIZONTAL, wxSize(250, 50))
- box.Add(wxButton(win, 1010, "10"), 10)
- box.Add(wxButton(win, 1010, "20"), 20)
- box.Add(wxButton(win, 1010, "30"), 30)
- box.Add(wxButton(win, 1010, "15"), 15)
- box.Add(wxButton(win, 1010, "5"), 5)
+ box = wxBoxSizer(wxHORIZONTAL)
+ box.Add(wxButton(win, 1010, "one"), 1, wxALIGN_TOP)
+ box.Add(wxButton(win, 1010, "two"), 1, wxEXPAND)
+ box.Add(wxButton(win, 1010, "three"), 1, wxCENTER)
+ box.Add(wxButton(win, 1010, "four"), 1, wxEXPAND)
+ box.Add(wxButton(win, 1010, "five"), 1, wxALIGN_BOTTOM)
+
+ return box
+
+#----------------------------------------------------------------------
+
+def makeSimpleBox7(win):
+ box = wxBoxSizer(wxHORIZONTAL)
+ box.Add(wxButton(win, 1010, "one"), 0, wxEXPAND)
+ box.Add(wxButton(win, 1010, "two"), 0, wxEXPAND)
+ box.Add(wxButton(win, 1010, "three"), 0, wxEXPAND)
+ box.Add(60, 20, 0, wxEXPAND)
+ box.Add(wxButton(win, 1010, "five"), 1, wxEXPAND)
return box
#----------------------------------------------------------------------
+def makeSimpleBox8(win):
+ box = wxBoxSizer(wxVERTICAL)
+ box.Add(wxButton(win, 1010, "one"), 0, wxEXPAND)
+ box.Add(0,0, 1)
+ box.Add(wxButton(win, 1010, "two"), 0, wxCENTER)
+ box.Add(0,0, 1)
+ box.Add(wxButton(win, 1010, "three"), 0, wxEXPAND)
+ box.Add(wxButton(win, 1010, "four"), 0, wxEXPAND)
+# box.Add(wxButton(win, 1010, "five"), 1, wxEXPAND)
+
+ return box
+
+#----------------------------------------------------------------------
+#----------------------------------------------------------------------
+
def makeSimpleBorder1(win):
- bdr = wxBorderSizer(wxALL)
+ bdr = wxBoxSizer(wxHORIZONTAL)
btn = wxButton(win, 1010, "border")
btn.SetSize(wxSize(80, 80))
- bdr.Add(btn, 15)
+ bdr.Add(btn, 1, wxEXPAND|wxALL, 15)
return bdr
#----------------------------------------------------------------------
def makeSimpleBorder2(win):
- bdr = wxBorderSizer(wxEAST | wxWEST)
+ bdr = wxBoxSizer(wxHORIZONTAL)
btn = wxButton(win, 1010, "border")
btn.SetSize(wxSize(80, 80))
- bdr.Add(btn, 15)
+ bdr.Add(btn, 1, wxEXPAND | wxEAST | wxWEST, 15)
return bdr
#----------------------------------------------------------------------
def makeSimpleBorder3(win):
- bdr = wxBorderSizer(wxNORTH | wxWEST)
+ bdr = wxBoxSizer(wxHORIZONTAL)
btn = wxButton(win, 1010, "border")
btn.SetSize(wxSize(80, 80))
- bdr.Add(btn, 15)
+ bdr.Add(btn, 1, wxEXPAND | wxNORTH | wxWEST, 15)
return bdr
def makeBoxInBox(win):
box = wxBoxSizer(wxVERTICAL)
- box.Add(wxButton(win, 1010, "one"))
+ box.Add(wxButton(win, 1010, "one"), 0, wxEXPAND)
box2 = wxBoxSizer(wxHORIZONTAL)
- box2.AddMany([ wxButton(win, 1010, "two"),
- wxButton(win, 1010, "three"),
- wxButton(win, 1010, "four"),
- wxButton(win, 1010, "five"),
+ box2.AddMany([ (wxButton(win, 1010, "two"), 0, wxEXPAND),
+ (wxButton(win, 1010, "three"), 0, wxEXPAND),
+ (wxButton(win, 1010, "four"), 0, wxEXPAND),
+ (wxButton(win, 1010, "five"), 0, wxEXPAND),
])
box3 = wxBoxSizer(wxVERTICAL)
- box3.AddMany([ (wxButton(win, 1010, "six"), 0),
- (wxButton(win, 1010, "seven"), 2),
- (wxButton(win, 1010, "eight"), 1),
- (wxButton(win, 1010, "nine"), 1),
+ box3.AddMany([ (wxButton(win, 1010, "six"), 0, wxEXPAND),
+ (wxButton(win, 1010, "seven"), 2, wxEXPAND),
+ (wxButton(win, 1010, "eight"), 1, wxEXPAND),
+ (wxButton(win, 1010, "nine"), 1, wxEXPAND),
])
- box2.Add(box3, 1)
- box.Add(box2, 1)
+ box2.Add(box3, 1, wxEXPAND)
+ box.Add(box2, 1, wxEXPAND)
- box.Add(wxButton(win, 1010, "ten"))
+ box.Add(wxButton(win, 1010, "ten"), 0, wxEXPAND)
return box
#----------------------------------------------------------------------
def makeBoxInBorder(win):
- bdr = wxBorderSizer(wxALL)
+ bdr = wxBoxSizer(wxHORIZONTAL)
box = makeSimpleBox3(win)
- bdr.Add(box, 15)
+ bdr.Add(box, 1, wxEXPAND | wxALL, 15)
return bdr
insideBox = wxBoxSizer(wxHORIZONTAL)
box2 = wxBoxSizer(wxHORIZONTAL)
- box2.AddMany([ wxButton(win, 1010, "one"),
- wxButton(win, 1010, "two"),
- wxButton(win, 1010, "three"),
- wxButton(win, 1010, "four"),
- wxButton(win, 1010, "five"),
+ box2.AddMany([ (wxButton(win, 1010, "one"), 0, wxEXPAND),
+ (wxButton(win, 1010, "two"), 0, wxEXPAND),
+ (wxButton(win, 1010, "three"), 0, wxEXPAND),
+ (wxButton(win, 1010, "four"), 0, wxEXPAND),
+ (wxButton(win, 1010, "five"), 0, wxEXPAND),
])
- insideBox.Add(box2, 0)
+ insideBox.Add(box2, 0, wxEXPAND)
- bdr = wxBorderSizer(wxALL)
- bdr.Add(wxButton(win, 1010, "border"), 20)
- insideBox.Add(bdr, 1)
+ bdr = wxBoxSizer(wxHORIZONTAL)
+ bdr.Add(wxButton(win, 1010, "border"), 1, wxEXPAND | wxALL)
+ insideBox.Add(bdr, 1, wxEXPAND | wxALL, 20)
box3 = wxBoxSizer(wxVERTICAL)
- box3.AddMany([ (wxButton(win, 1010, "six"), 0),
- (wxButton(win, 1010, "seven"), 2),
- (wxButton(win, 1010, "eight"), 1),
- (wxButton(win, 1010, "nine"), 1),
+ box3.AddMany([ (wxButton(win, 1010, "six"), 0, wxEXPAND),
+ (wxButton(win, 1010, "seven"), 2, wxEXPAND),
+ (wxButton(win, 1010, "eight"), 1, wxEXPAND),
+ (wxButton(win, 1010, "nine"), 1, wxEXPAND),
])
- insideBox.Add(box3, 1)
+ insideBox.Add(box3, 1, wxEXPAND)
outsideBox = wxBoxSizer(wxVERTICAL)
- outsideBox.Add(wxButton(win, 1010, "top"))
- outsideBox.Add(insideBox, 1)
- outsideBox.Add(wxButton(win, 1010, "bottom"))
+ outsideBox.Add(wxButton(win, 1010, "top"), 0, wxEXPAND)
+ outsideBox.Add(insideBox, 1, wxEXPAND)
+ outsideBox.Add(wxButton(win, 1010, "bottom"), 0, wxEXPAND)
return outsideBox
#----------------------------------------------------------------------
+def makeGrid1(win):
+ gs = wxGridSizer(3, 3, 2, 2) # rows, cols, hgap, vgap
+
+ gs.AddMany([ (wxButton(win, 1010, 'one'), 0, wxEXPAND),
+ (wxButton(win, 1010, 'two'), 0, wxEXPAND),
+ (wxButton(win, 1010, 'three'), 0, wxEXPAND),
+ (wxButton(win, 1010, 'four'), 0, wxEXPAND),
+ (wxButton(win, 1010, 'five'), 0, wxEXPAND),
+ #(75, 50),
+ (wxButton(win, 1010, 'six'), 0, wxEXPAND),
+ (wxButton(win, 1010, 'seven'), 0, wxEXPAND),
+ (wxButton(win, 1010, 'eight'), 0, wxEXPAND),
+ (wxButton(win, 1010, 'nine'), 0, wxEXPAND),
+ ])
+
+ return gs
+
+#----------------------------------------------------------------------
+
+def makeGrid2(win):
+ gs = wxGridSizer(3, 3) # rows, cols, hgap, vgap
+
+ box = wxBoxSizer(wxVERTICAL)
+ box.Add(wxButton(win, 1010, 'A'), 0, wxEXPAND)
+ box.Add(wxButton(win, 1010, 'B'), 1, wxEXPAND)
+
+ gs2 = wxGridSizer(2,2, 4, 4)
+ gs2.AddMany([ (wxButton(win, 1010, 'C'), 0, wxEXPAND),
+ (wxButton(win, 1010, 'E'), 0, wxEXPAND),
+ (wxButton(win, 1010, 'F'), 0, wxEXPAND),
+ (wxButton(win, 1010, 'G'), 0, wxEXPAND)])
+
+ gs.AddMany([ (wxButton(win, 1010, 'one'), 0, wxALIGN_RIGHT | wxALIGN_BOTTOM),
+ (wxButton(win, 1010, 'two'), 0, wxEXPAND),
+ (wxButton(win, 1010, 'three'), 0, wxALIGN_LEFT | wxALIGN_BOTTOM),
+ (wxButton(win, 1010, 'four'), 0, wxEXPAND),
+ (wxButton(win, 1010, 'five'), 0, wxCENTER),
+ (wxButton(win, 1010, 'six'), 0, wxEXPAND),
+ (box, 0, wxEXPAND | wxALL, 10),
+ (wxButton(win, 1010, 'eight'), 0, wxEXPAND),
+ (gs2, 0, wxEXPAND | wxALL, 4),
+ ])
+
+ return gs
+
+#----------------------------------------------------------------------
+
+def makeGrid3(win):
+ gs = wxFlexGridSizer(3, 3, 2, 2) # rows, cols, hgap, vgap
+
+ gs.AddMany([ (wxButton(win, 1010, 'one'), 0, wxEXPAND),
+ (wxButton(win, 1010, 'two'), 0, wxEXPAND),
+ (wxButton(win, 1010, 'three'), 0, wxEXPAND),
+ (wxButton(win, 1010, 'four'), 0, wxEXPAND),
+ #(wxButton(win, 1010, 'five'), 0, wxEXPAND),
+ (175, 50),
+ (wxButton(win, 1010, 'six'), 0, wxEXPAND),
+ (wxButton(win, 1010, 'seven'), 0, wxEXPAND),
+ (wxButton(win, 1010, 'eight'), 0, wxEXPAND),
+ (wxButton(win, 1010, 'nine'), 0, wxEXPAND),
+ ])
+
+ gs.AddGrowableRow(0)
+ gs.AddGrowableRow(2)
+ gs.AddGrowableCol(1)
+ return gs
+
+#----------------------------------------------------------------------
+
theTests = [
("Simple horizontal boxes", makeSimpleBox1,
"This is a HORIZONTAL box sizer with four non-stretchable buttons held "
"factor so it gets more of the free space."
),
+ ("Edge Affinity", makeSimpleBox6,
+ "For items that don't completly fill their allotted space, and don't "
+ "stretch, you can specify which side (or the center) they should stay "
+ "attached to."
+ ),
+
+ ("Spacer", makeSimpleBox7,
+ "You can add empty space to be managed by a Sizer just as if it were a "
+ "window or another Sizer."
+ ),
+
+ ("Centering in available space", makeSimpleBox8,
+ "This one shows an item that does not expand to fill it's space, but rather"
+ "stays centered within it."
+ ),
+
# ("Percent Sizer", makeSimpleBox6,
# "You can use the wxBoxSizer like a Percent Sizer. Just make sure that all "
# "the weighting factors add up to 100!"
"Another nesting example. This one has Boxes and a Border inside another Box."
),
+ ("", None, ""),
+
+ ("Simple Grid", makeGrid1,
+ "This is an example of the wxGridSizer. In this case all row heights "
+ "and column widths are kept the same as all the others and all items "
+ "fill their available space. The horzontal and vertical gaps are set to "
+ "2 pixels each."
+ ),
+
+ ("More Grid Features", makeGrid2,
+ "This is another example of the wxGridSizer. This one has no gaps in the grid, "
+ "but various cells are given different alignment options and some of them "
+ "hold nested sizers."
+ ),
+
+ ("Flexible Grid", makeGrid3,
+ "This grid allows the rows to have different heights and the columns to have "
+ "different widths. You can also specify rows and columns that are growable, "
+ "which we have done for the first and last row and the middle column for "
+ "this example.\n"
+ "\nThere is also a spacer in the middle cell instead of an actual window."
+ ),
+
]
#----------------------------------------------------------------------
self.sizer = sizerFunc(self)
self.CreateStatusBar()
self.SetStatusText("Resize this frame to see how the sizers respond...")
- self.sizer.FitWindow(self)
-
+ self.sizer.Fit(self)
- def OnSize(self, event):
- size = self.GetClientSize()
- self.sizer.Layout(size)
+ self.SetAutoLayout(true)
+ self.SetSizer(self.sizer)
def OnCloseWindow(self, event):
self.MakeModal(false)
self.frame = frame
self.list = wxListBox(self, 401,
- wxDLG_PNT(self, 10, 10), wxDLG_SZE(self, 100, 60),
+ wxDLG_PNT(self, 10, 10), wxDLG_SZE(self, 100, 100),
[])
EVT_LISTBOX(self, 401, self.OnSelect)
EVT_LISTBOX_DCLICK(self, 401, self.OnDClick)
- wxButton(self, 402, "Try it!", wxDLG_PNT(self, 120, 10)).SetDefault()
+ self.btn = wxButton(self, 402, "Try it!", wxDLG_PNT(self, 120, 10)).SetDefault()
EVT_BUTTON(self, 402, self.OnDClick)
self.text = wxTextCtrl(self, -1, "",
- wxDLG_PNT(self, 10, 80),
- wxDLG_SZE(self, 200, 60),
+ wxDLG_PNT(self, 10, 115),
+ wxDLG_SZE(self, 200, 50),
wxTE_MULTILINE | wxTE_READONLY)
for item in theTests:
win = TestSelectionPanel(nb, frame)
return win
-overview = wxSizer.__doc__ + '\n' + '-' * 80 + '\n' + \
- wxBoxSizer.__doc__ + '\n' + '-' * 80 + '\n' + \
- wxBorderSizer.__doc__
+overview = ""
+#wxSizer.__doc__ + '\n' + '-' * 80 + '\n' + \
+#wxBoxSizer.__doc__ + '\n' + '-' * 80 + '\n' + \
+#wxBorderSizer.__doc__
#----------------------------------------------------------------------
mainmenu.Append(menu, "&File")
self.SetMenuBar(mainmenu)
EVT_MENU(self, 200, self.OnExit)
- self.panel = TestSelectionPanel(self)
+ self.panel = TestSelectionPanel(self, self)
self.SetSize(wxSize(400, 380))
def OnCloseWindow(self, event):