1 #----------------------------------------------------------------------
3 #----------------------------------------------------------------------
5 from wxPython
.wx
import *
6 from wxPython
.lib
.sizers
import *
8 #----------------------------------------------------------------------
10 def makeSimpleBox1(win
):
11 box
= wxBoxSizer(wxHORIZONTAL
)
12 box
.Add(wxButton(win
, 1010, "one"), 0)
13 box
.Add(wxButton(win
, 1010, "two"), 0)
14 box
.Add(wxButton(win
, 1010, "three"), 0)
15 box
.Add(wxButton(win
, 1010, "four"), 0)
19 #----------------------------------------------------------------------
21 def makeSimpleBox2(win
):
22 box
= wxBoxSizer(wxVERTICAL
)
23 box
.Add(wxButton(win
, 1010, "one"), 0)
24 box
.Add(wxButton(win
, 1010, "two"), 0)
25 box
.Add(wxButton(win
, 1010, "three"), 0)
26 box
.Add(wxButton(win
, 1010, "four"), 0)
30 #----------------------------------------------------------------------
32 def makeSimpleBox3(win
):
33 box
= wxBoxSizer(wxHORIZONTAL
)
34 box
.Add(wxButton(win
, 1010, "one"), 0)
35 box
.Add(wxButton(win
, 1010, "two"), 0)
36 box
.Add(wxButton(win
, 1010, "three"), 0)
37 box
.Add(wxButton(win
, 1010, "four"), 0)
38 box
.Add(wxButton(win
, 1010, "five"), 1)
42 #----------------------------------------------------------------------
44 def makeSimpleBox4(win
):
45 box
= wxBoxSizer(wxHORIZONTAL
)
46 box
.Add(wxButton(win
, 1010, "one"), 0)
47 box
.Add(wxButton(win
, 1010, "two"), 0)
48 box
.Add(wxButton(win
, 1010, "three"), 1)
49 box
.Add(wxButton(win
, 1010, "four"), 1)
50 box
.Add(wxButton(win
, 1010, "five"), 1)
54 #----------------------------------------------------------------------
56 def makeSimpleBox5(win
):
57 box
= wxBoxSizer(wxHORIZONTAL
)
58 box
.Add(wxButton(win
, 1010, "one"), 0)
59 box
.Add(wxButton(win
, 1010, "two"), 0)
60 box
.Add(wxButton(win
, 1010, "three"), 3)
61 box
.Add(wxButton(win
, 1010, "four"), 1)
62 box
.Add(wxButton(win
, 1010, "five"), 1)
66 #----------------------------------------------------------------------
68 def makeSimpleBox6(win
):
69 box
= wxBoxSizer(wxHORIZONTAL
, wxSize(250, 50))
70 box
.Add(wxButton(win
, 1010, "10"), 10)
71 box
.Add(wxButton(win
, 1010, "20"), 20)
72 box
.Add(wxButton(win
, 1010, "30"), 30)
73 box
.Add(wxButton(win
, 1010, "15"), 15)
74 box
.Add(wxButton(win
, 1010, "5"), 5)
78 #----------------------------------------------------------------------
80 def makeSimpleBorder1(win
):
81 bdr
= wxBorderSizer(wxALL
)
82 btn
= wxButton(win
, 1010, "border")
83 btn
.SetSize(wxSize(80, 80))
88 #----------------------------------------------------------------------
90 def makeSimpleBorder2(win
):
91 bdr
= wxBorderSizer(wxEAST | wxWEST
)
92 btn
= wxButton(win
, 1010, "border")
93 btn
.SetSize(wxSize(80, 80))
98 #----------------------------------------------------------------------
100 def makeSimpleBorder3(win
):
101 bdr
= wxBorderSizer(wxNORTH | wxWEST
)
102 btn
= wxButton(win
, 1010, "border")
103 btn
.SetSize(wxSize(80, 80))
108 #----------------------------------------------------------------------
109 #----------------------------------------------------------------------
111 def makeBoxInBox(win
):
112 box
= wxBoxSizer(wxVERTICAL
)
114 btn
= wxButton(win
, 1010, "one")
117 box2
= wxBoxSizer(wxHORIZONTAL
)
118 btn
= wxButton(win
, 1010, "two")
120 btn
= wxButton(win
, 1010, "three")
122 btn
= wxButton(win
, 1010, "four")
124 btn
= wxButton(win
, 1010, "five")
127 box3
= wxBoxSizer(wxVERTICAL
)
128 box3
.AddMany([ (wxButton(win
, 1010, "six"), 1),
129 (wxButton(win
, 1010, "seven"), 2),
130 (wxButton(win
, 1010, "eight"), 1),
131 (wxButton(win
, 1010, "nine"), 1),
137 btn
= wxButton(win
, 1010, "ten")
142 #----------------------------------------------------------------------
144 def makeBoxInBorder(win
):
145 bdr
= wxBorderSizer(wxALL
)
146 box
= makeSimpleBox3(win
)
151 #----------------------------------------------------------------------
153 def makeBorderInBox(win
):
154 insideBox
= wxBoxSizer(wxHORIZONTAL
)
156 box2
= wxBoxSizer(wxHORIZONTAL
)
157 box2
.AddMany([ (wxButton(win
, 1010, "one"), 0),
158 (wxButton(win
, 1010, "two"), 0),
159 (wxButton(win
, 1010, "three"), 0),
160 (wxButton(win
, 1010, "four"), 0),
161 (wxButton(win
, 1010, "five"), 0),
164 insideBox
.Add(box2
, 0)
166 bdr
= wxBorderSizer(wxALL
)
167 bdr
.Add(wxButton(win
, 1010, "border"), 20)
168 insideBox
.Add(bdr
, 1)
170 box3
= wxBoxSizer(wxVERTICAL
)
171 box3
.AddMany([ (wxButton(win
, 1010, "six"), 1),
172 (wxButton(win
, 1010, "seven"), 2),
173 (wxButton(win
, 1010, "eight"), 1),
174 (wxButton(win
, 1010, "nine"), 1),
176 insideBox
.Add(box3
, 1)
178 outsideBox
= wxBoxSizer(wxVERTICAL
)
179 outsideBox
.Add(wxButton(win
, 1010, "top"))
180 outsideBox
.Add(insideBox
, 1)
181 outsideBox
.Add(wxButton(win
, 1010, "bottom"))
186 #----------------------------------------------------------------------
189 ("Simple horizontal boxes", makeSimpleBox1
,
190 "This is a HORIZONTAL box sizer with four non-stretchable buttons held "
191 "within it. Notice that the buttons are added and aligned in the horizontal "
192 "dimension. Also notice that they are fixed size in the horizontal dimension, "
193 "but will stretch vertically."
196 ("Simple vertical boxes", makeSimpleBox2
,
197 "Exactly the same as the previous sample but using a VERTICAL box sizer "
198 "instead of a HORIZONTAL one."
201 ("Add a stretchable", makeSimpleBox3
,
202 "We've added one more button with the strechable flag turned on. Notice "
203 "how it grows to fill the extra space in the otherwise fixed dimension."
206 ("More than one stretchable", makeSimpleBox4
,
207 "Here there are several items that are stretchable, they all divide up the "
208 "extra space evenly."
211 ("Weighting factor", makeSimpleBox5
,
212 "This one shows more than one strechable, but one of them has a weighting "
213 "factor so it gets more of the free space."
216 # ("Percent Sizer", makeSimpleBox6,
217 # "You can use the wxBoxSizer like a Percent Sizer. Just make sure that all "
218 # "the weighting factors add up to 100!"
223 ("Simple border sizer", makeSimpleBorder1
,
224 "The wxBorderSizer leaves empty space around its contents. This one "
225 "gives a border all the way around."
228 ("East and West border", makeSimpleBorder2
,
229 "You can pick and choose which sides have borders."
232 ("North and West border", makeSimpleBorder3
,
233 "You can pick and choose which sides have borders."
238 ("Boxes inside of boxes", makeBoxInBox
,
239 "This one shows nesting of boxes within boxes within boxes, using both "
240 "orientations. Notice also that button seven has a greater weighting "
241 "factor than its siblings."
244 ("Boxes inside a Border", makeBoxInBorder
,
245 "Sizers of different types can be nested withing each other as well. "
246 "Here is a box sizer with several buttons embedded within a border sizer."
249 ("Border in a Box", makeBorderInBox
,
250 "Another nesting example. This one has Boxes and a Border inside another Box."
254 #----------------------------------------------------------------------
256 class TestFrame(wxFrame
):
257 def __init__(self
, parent
, title
, sizerFunc
):
258 wxFrame
.__init
__(self
, parent
, -1, title
)
259 EVT_BUTTON(self
, 1010, self
.OnButton
)
261 self
.sizer
= sizerFunc(self
)
262 self
.CreateStatusBar()
264 self
.sizer
.FitWindow(self
)
268 def OnSize(self
, event
):
269 size
= self
.GetClientSize()
270 self
.sizer
.Layout(size
)
272 def OnCloseWindow(self
, event
):
273 self
.MakeModal(false
)
276 def OnButton(self
, event
):
279 #----------------------------------------------------------------------
283 class TestSelectionPanel(wxPanel
):
284 def __init__(self
, parent
, frame
):
285 wxPanel
.__init
__(self
, parent
, -1)
288 self
.list = wxListBox(self
, 401,
289 wxDLG_PNT(self
, 10, 10), wxDLG_SZE(self
, 100, 60),
291 EVT_LISTBOX(self
, 401, self
.OnSelect
)
292 EVT_LISTBOX_DCLICK(self
, 401, self
.OnDClick
)
294 wxButton(self
, 402, "Try it!", wxDLG_PNT(self
, 120, 10)).SetDefault()
295 EVT_BUTTON(self
, 402, self
.OnDClick
)
297 self
.text
= wxTextCtrl(self
, -1, "",
298 wxDLG_PNT(self
, 10, 80),
299 wxDLG_SZE(self
, 200, 60),
300 wxTE_MULTILINE | wxTE_READONLY
)
302 for item
in theTests
:
303 self
.list.Append(item
[0])
307 def OnSelect(self
, event
):
308 pos
= self
.list.GetSelection()
309 self
.text
.SetValue(theTests
[pos
][2])
312 def OnDClick(self
, event
):
313 pos
= self
.list.GetSelection()
314 title
= theTests
[pos
][0]
315 func
= theTests
[pos
][1]
318 win
= TestFrame(self
, title
, func
)
319 win
.CentreOnParent(wxBOTH
)
323 #----------------------------------------------------------------------
325 def runTest(frame
, nb
, log
):
326 win
= TestSelectionPanel(nb
, frame
)
329 overview
= wxSizer
.__doc
__ + '\n' + '-' * 80 + '\n' + \
330 wxBoxSizer
.__doc
__ + '\n' + '-' * 80 + '\n' + \
331 wxBorderSizer
.__doc
__
333 #----------------------------------------------------------------------
337 if __name__
== '__main__':
339 class MainFrame(wxFrame
):
341 wxFrame
.__init
__(self
, NULL
, -1, "Testing...")
343 self
.CreateStatusBar()
344 mainmenu
= wxMenuBar()
346 menu
.Append(200, 'E&xit', 'Get the heck outta here!')
347 mainmenu
.Append(menu
, "&File")
348 self
.SetMenuBar(mainmenu
)
349 EVT_MENU(self
, 200, self
.OnExit
)
350 self
.panel
= TestSelectionPanel(self
)
351 self
.SetSize(wxSize(400, 380))
353 def OnCloseWindow(self
, event
):
356 def OnExit(self
, event
):
360 class TestApp(wxApp
):
364 self
.SetTopWindow(frame
)
371 #----------------------------------------------------------------------