1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 import os
22 import sys
23 import wx
24
25
26
27
28
29 class ColWin(wx.Window):
30
31 def __init__(self, parent, id, BackColour):
32 wx.Window.__init__(self, parent, id, (-1, -1), (-1, -1), wx.SIMPLE_BORDER)
33 self.SetBackgroundColour(BackColour)
34
35
36
37
38 class MyPanel_0(wx.Panel):
39 """
40 - the simplest sizer, a ColWin
41 - use of named arguments
42 """
43
44 def __init__(self, parent):
45 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
46
47 wgreen = ColWin(self, wx.NewId(), wx.GREEN)
48
49 b = 20
50 vsizer1 = wx.BoxSizer(orient=wx.VERTICAL)
51
52
53 vsizer1.Add(item=wgreen, proportion=1, flag=wx.EXPAND | wx.ALL, border=b)
54 self.SetSizer(vsizer1)
55
56
57
58 class MyPanel_1(wx.Panel):
59 """
60 - two ColWins, vertically
61 """
62
63 def __init__(self, parent):
64 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
65
66 wred = ColWin(self, wx.NewId(), wx.RED)
67 wblue = ColWin(self, wx.NewId(), wx.BLUE)
68
69 b = 5
70 vsizer1 = wx.BoxSizer(wx.VERTICAL)
71 vsizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
72 vsizer1.Add(wblue, 1, wx.EXPAND | wx.ALL, b)
73 self.SetSizer(vsizer1)
74
75
76
77 class MyPanel_2(wx.Panel):
78 """
79 - three ColWins, horizontally
80 """
81
82 def __init__(self, parent):
83 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
84
85 wred = ColWin(self, wx.NewId(), wx.RED)
86 wblue = ColWin(self, wx.NewId(), wx.BLUE)
87 wgreen = ColWin(self, wx.NewId(), wx.GREEN)
88
89 b = 5
90 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
91 hsizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
92 hsizer1.Add(wblue, 1, wx.EXPAND | wx.ALL, b)
93 hsizer1.Add(wgreen, 1, wx.EXPAND | wx.ALL, b)
94 self.SetSizer(hsizer1)
95
96
97
98 class MyPanel_3(wx.Panel):
99 """
100 - three ColWins, horizontally, height ratio 1:2:3
101 """
102
103 def __init__(self, parent):
104 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
105
106 wred = ColWin(self, wx.NewId(), wx.RED)
107 wblue = ColWin(self, wx.NewId(), wx.BLUE)
108 wgreen = ColWin(self, wx.NewId(), wx.GREEN)
109
110 b = 5
111 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
112 hsizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
113 hsizer1.Add(wblue, 2, wx.EXPAND | wx.ALL, b)
114 hsizer1.Add(wgreen, 3, wx.EXPAND | wx.ALL, b)
115 self.SetSizer(hsizer1)
116
117
118
119 class MyPanel_4(wx.Panel):
120 """
121 - two ColWins, vertically, a fixed width of 50 pixels between the two items
122 """
123
124 def __init__(self, parent):
125 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
126
127 wred = ColWin(self, wx.NewId(), wx.RED)
128 wblue = ColWin(self, wx.NewId(), wx.BLUE)
129
130 b = 5
131 vsizer1 = wx.BoxSizer(wx.VERTICAL)
132 vsizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
133 vsizer1.Add((-1, 50), 0, wx.ALL, b)
134 vsizer1.Add(wblue, 1, wx.EXPAND | wx.ALL, b)
135 self.SetSizer(vsizer1)
136
137
138
139 class MyPanel_5(wx.Panel):
140 """
141 - two items, a ColWin and a Button, vertically
142 - the Button is either left/right aligned or centered
143 - comment / uncomment for testing the Button alignment
144 - wx.ALIGN_LEFT is the default value
145 """
146
147 def __init__(self, parent):
148 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
149
150 wred = ColWin(self, wx.NewId(), wx.RED)
151 b1 = wx.Button(self, wx.NewId(), 'button1', (-1, -1), wx.DefaultSize)
152
153 b = 5
154 vsizer1 = wx.BoxSizer(wx.VERTICAL)
155 vsizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
156
157
158
159 vsizer1.Add(b1, 0, wx.ALIGN_CENTER | wx.ALL, b)
160 self.SetSizer(vsizer1)
161
162
163
164 class MyPanel_6(wx.Panel):
165 """
166 - three items, a ColWin and two Buttons
167 - the Buttons are either left/right aligned or centered
168 """
169
170 def __init__(self, parent):
171 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
172
173 wred = ColWin(self, wx.NewId(), wx.RED)
174 b1 = wx.Button(self, wx.NewId(), '&OK', (-1, -1), wx.DefaultSize)
175 b2 = wx.Button(self, wx.NewId(), '&Cancel', (-1, -1), wx.DefaultSize)
176
177 b = 10
178 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
179 hsizer1.Add(b1, 0)
180 hsizer1.Add(b2, 0, wx.LEFT, b)
181
182 b = 5
183 vsizer1 = wx.BoxSizer(wx.VERTICAL)
184 vsizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
185 vsizer1.Add(hsizer1, 0, wx.ALIGN_RIGHT | wx.ALL, b)
186
187
188 self.SetSizer(vsizer1)
189
190
191
192 class MyPanel_7(wx.Panel):
193 """
194 - four items, a ColWin, two Buttons, and a StaticLine
195 - the Buttons are either left/right aligned or centered
196 - the height of the static line == 2, the wx.GROW flag specifies an
197 horizontal expansion, since the StaticLine is in a vertical sizer
198 """
199 def __init__(self, parent):
200 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
201
202 wred = ColWin(self, wx.NewId(), wx.RED)
203 b1 = wx.Button(self, wx.NewId(), '&OK', (-1, -1), wx.DefaultSize)
204 b2 = wx.Button(self, wx.NewId(), '&Cancel', (-1, -1), wx.DefaultSize)
205 staline = wx.StaticLine(self, wx.NewId(), (-1, -1), (-1, 2), wx.LI_HORIZONTAL)
206
207 b = 5
208 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
209 hsizer1.Add(b1, 0)
210 hsizer1.Add(b2, 0, wx.LEFT, b)
211
212 vsizer1 = wx.BoxSizer(wx.VERTICAL)
213 vsizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
214 vsizer1.Add(staline, 0, wx.GROW | wx.ALL, b)
215 vsizer1.Add(hsizer1, 0, wx.ALIGN_RIGHT | wx.ALL, b)
216 self.SetSizer(vsizer1)
217
218
219
220 class MyPanel_8(wx.Panel):
221 """
222 - 7 items, 2 ColWins and 5 Buttons
223 - ColWins: one is sizable, the others not
224 - Buttons at the right of the frame
225 - something like a toolbar at the right
226 """
227
228 def __init__(self, parent):
229 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
230
231 wred = ColWin(self, wx.NewId(), wx.RED)
232 wwhite = ColWin(self, wx.NewId(), wx.WHITE)
233
234 b1 = wx.Button(self, wx.NewId(), '1', (-1, -1), wx.DefaultSize)
235 b2 = wx.Button(self, wx.NewId(), '2', (-1, -1), wx.DefaultSize)
236 b3 = wx.Button(self, wx.NewId(), '3', (-1, -1), wx.DefaultSize)
237 b4 = wx.Button(self, wx.NewId(), '4', (-1, -1), wx.DefaultSize)
238 b5 = wx.Button(self, wx.NewId(), '5', (-1, -1), wx.DefaultSize)
239
240 vsizer1 = wx.BoxSizer(wx.VERTICAL)
241 b = 3
242 vsizer1.Add(wred, 1, wx.EXPAND | wx.BOTTOM, b)
243 vsizer1.Add(wwhite, 0, wx.EXPAND, b)
244
245 vsizer2 = wx.BoxSizer(wx.VERTICAL)
246 b = 5
247 vsizer2.Add(b1, 0, wx.BOTTOM, b)
248 vsizer2.Add(b2, 0, wx.BOTTOM, b)
249 vsizer2.Add(b3, 0, wx.BOTTOM, b)
250 vsizer2.Add(b4, 0, wx.BOTTOM, b)
251 vsizer2.Add(b5, 0, wx.BOTTOM, b)
252
253 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
254 b = 10
255 hsizer1.Add(vsizer1, 1, wx.EXPAND | wx.LEFT | wx.TOP | wx.BOTTOM, b)
256 hsizer1.Add(vsizer2, 0, wx.EXPAND| wx.ALL, b)
257
258 self.SetSizer(hsizer1)
259
260
261
262 class MyPanel_9(wx.Panel):
263 """
264 - 7 items, 2 ColWins and 5 Buttons
265 - the ColWins are sizable
266 - the Buttons have a fixed height and a default width
267 - something like a toolbar at the top
268 """
269 def __init__(self, parent):
270 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
271
272 wred = ColWin(self, wx.NewId(), wx.RED)
273 wwhite = ColWin(self, wx.NewId(), wx.WHITE)
274
275 h = 40
276 b1 = wx.Button(self, wx.NewId(), '1', (-1, -1), (-1, h))
277 b2 = wx.Button(self, wx.NewId(), '2', (-1, -1), (-1, h))
278 b3 = wx.Button(self, wx.NewId(), '3', (-1, -1), (-1, h))
279 b4 = wx.Button(self, wx.NewId(), '4', (-1, -1), (-1, h))
280 b5 = wx.Button(self, wx.NewId(), '5', (-1, -1), (-1, h))
281
282 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
283 hsizer1.Add(b1, 0)
284 hsizer1.Add(b2, 0)
285 hsizer1.Add(b3, 0)
286 hsizer1.Add(b4, 0)
287 hsizer1.Add(b5, 0)
288
289 b = 2
290 hsizer2 = wx.BoxSizer(wx.HORIZONTAL)
291 hsizer2.Add(wred, 1, wx.EXPAND | wx.RIGHT, b)
292 hsizer2.Add(wwhite, 1, wx.EXPAND | wx.LEFT, b)
293
294 b = 5
295 vsizer1 = wx.BoxSizer(wx.VERTICAL)
296 vsizer1.Add(hsizer1, 0, wx.EXPAND, b)
297 vsizer1.Add(hsizer2, 1, wx.ALL | wx.EXPAND, b)
298
299 self.SetSizer(vsizer1)
300
301
302
303 class MyPanel_10(wx.Panel):
304 """
305 - three ColWins in a StaticBoxSizer, vertically
306 """
307
308 def __init__(self, parent):
309 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
310
311 wred = ColWin(self, wx.NewId(), wx.RED)
312 wblue = ColWin(self, wx.NewId(), wx.BLUE)
313 wgreen = ColWin(self, wx.NewId(), wx.GREEN)
314
315 b = 10
316 vsbsizer1 = wx.StaticBoxSizer(wx.StaticBox(self, wx.NewId(), 'StaticboxSizer with a caption'), wx.VERTICAL)
317 vsbsizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
318 vsbsizer1.Add(wblue, 1, wx.EXPAND | wx.ALL, b)
319 vsbsizer1.Add(wgreen, 1, wx.EXPAND | wx.ALL, b)
320 self.SetSizer(vsbsizer1)
321
322
323
324 class MyPanel_11(wx.Panel):
325 """
326 - three ColWins in a StaticBoxSizer, vertically
327 - the StaticBoxSizer is in a sizer to enable a border
328 """
329
330 def __init__(self, parent):
331 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
332
333 wred = ColWin(self, wx.NewId(), wx.RED)
334 wblue = ColWin(self, wx.NewId(), wx.BLUE)
335 wgreen = ColWin(self, wx.NewId(), wx.GREEN)
336
337 b = 10
338 vsbsizer1 = wx.StaticBoxSizer(wx.StaticBox(self, wx.NewId(), 'StaticboxSizer with a caption'), wx.VERTICAL)
339 vsbsizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
340 vsbsizer1.Add(wblue, 1, wx.EXPAND | wx.ALL, b)
341 vsbsizer1.Add(wgreen, 1, wx.EXPAND | wx.ALL, b)
342
343 b = 20
344 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
345 hsizer1.Add(vsbsizer1, 1, wx.EXPAND | wx.ALL, b)
346
347 self.SetSizer(hsizer1)
348
349
350
351 class MyPanel_12(wx.Panel):
352 """
353 - 5 ColWins, vertically
354 - the ColWins 2 and 4 are in StaticBoxSizers
355 """
356 def __init__(self, parent):
357 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
358
359 wred = ColWin(self, wx.NewId(), wx.RED)
360 wblue = ColWin(self, wx.NewId(), wx.BLUE)
361 wgreen = ColWin(self, wx.NewId(), wx.GREEN)
362 wwhite = ColWin(self, wx.NewId(), wx.WHITE)
363 wyellow = ColWin(self, wx.NewId(), wx.NamedColour('yellow'))
364
365 b = 10
366 vsbsizer1 = wx.StaticBoxSizer(wx.StaticBox(self, wx.NewId(), 'blue'), wx.VERTICAL)
367 vsbsizer1.Add(wblue, 1, wx.EXPAND | wx.ALL, b)
368
369 vsbsizer2 = wx.StaticBoxSizer(wx.StaticBox(self, wx.NewId(), 'white'), wx.VERTICAL)
370 vsbsizer2.Add(wwhite, 1, wx.EXPAND | wx.ALL, b)
371
372 b = 5
373 vsizer1 = wx.BoxSizer(wx.VERTICAL)
374 vsizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
375 vsizer1.Add(vsbsizer1, 1, wx.EXPAND | wx.ALL, b)
376 vsizer1.Add(wgreen, 1, wx.EXPAND | wx.ALL, b)
377 vsizer1.Add(vsbsizer2, 1, wx.EXPAND | wx.ALL, b)
378 vsizer1.Add(wyellow, 1, wx.EXPAND | wx.ALL, b)
379
380 self.SetSizer(vsizer1)
381
382
383
384 class MyPanel_13(wx.Panel):
385 """
386 - 3 StaticBoxSizers with each a ColWin
387 - the StaticBoxSizers are arranged vertically
388 """
389
390 def __init__(self, parent):
391 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
392
393 wred = ColWin(self, wx.NewId(), wx.NamedColour('green'))
394 wgreen = ColWin(self, wx.NewId(), wx.NamedColour('red'))
395 wblue = ColWin(self, wx.NewId(), wx.NamedColour('blue'))
396
397 b = 10
398 sizer1 = wx.StaticBoxSizer(wx.StaticBox(self, wx.NewId(), 'Staticbox'), wx.VERTICAL)
399 sizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
400
401 sizer2 = wx.StaticBoxSizer(wx.StaticBox(self, wx.NewId(), 'Staticbox'), wx.VERTICAL)
402 sizer2.Add(wgreen, 1, wx.EXPAND | wx.ALL, b)
403
404 sizer4 = wx.StaticBoxSizer(wx.StaticBox(self, wx.NewId(), 'Staticbox'), wx.VERTICAL)
405 sizer4.Add(wblue, 1, wx.EXPAND | wx.ALL, b)
406
407
408
409 b1, b2 = 0, -1
410 sizer3 = wx.BoxSizer(wx.HORIZONTAL)
411 sizer3.Add(sizer1, 1, wx.EXPAND, b1)
412 sizer3.Add(sizer2, 1, wx.EXPAND | wx.LEFT, b2)
413 sizer3.Add(sizer4, 1, wx.EXPAND | wx.LEFT, b2)
414
415 self.SetSizer(sizer3)
416
417
418
419 class MyPanel_14(wx.Panel):
420 """
421 - 3 ColWins, horizontally, 2 spacers with a fixed height
422 """
423 def __init__(self, parent):
424 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
425
426 wred = ColWin(self, wx.NewId(), wx.RED)
427 wblue = ColWin(self, wx.NewId(), wx.BLUE)
428 wgreen = ColWin(self, wx.NewId(), wx.GREEN)
429
430 b = 0
431 h = 20
432 hsizer1 = wx.BoxSizer(wx.VERTICAL)
433 hsizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
434 hsizer1.Add((-1, h))
435 hsizer1.Add(wblue, 1, wx.EXPAND | wx.ALL, b)
436 hsizer1.Add((-1, h))
437 hsizer1.Add(wgreen, 1, wx.EXPAND | wx.ALL, b)
438 self.SetSizer(hsizer1)
439
440
441
442 class MyPanel_15(wx.Panel):
443 """
444 - 4 items, a ColWin, 3 Buttons
445 - Buttons 1 and 3 are left/right aligned, Button 2 is centered
446 - use of spacers to set a gap between the Buttons.
447 - better way?
448 """
449
450 def __init__(self, parent):
451 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
452
453 wgreen = ColWin(self, wx.NewId(), wx.NamedColour('green'))
454 b1 = wx.Button(self, wx.NewId(), 'button1', (-1, -1), wx.DefaultSize)
455 b2 = wx.Button(self, wx.NewId(), 'button2', (-1, -1), wx.DefaultSize)
456 b3 = wx.Button(self, wx.NewId(), 'button3', (-1, -1), wx.DefaultSize)
457
458 b = 0
459 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
460 hsizer1.Add(b1, 0, wx.ALL, b)
461 hsizer1.Add((-1, -1), 1)
462 hsizer1.Add(b2, 0, wx.ALL, b)
463 hsizer1.Add((-1, -1), 1)
464 hsizer1.Add(b3, 0, wx.ALL, b)
465
466
467
468
469
470
471
472
473 b = 5
474 vsizer2 = wx.BoxSizer(wx.VERTICAL)
475 vsizer2.Add(wgreen, 1, wx.EXPAND | wx.ALL, b)
476 vsizer2.Add(hsizer1, 0, wx.EXPAND | wx.ALL, b)
477 self.SetSizer(vsizer2)
478
479
480
481 class MyPanel_16(wx.Panel):
482 """
483 - 4 items, a ColWin, 3 Buttons
484 - Buttons 1 and 3 are top/bottom aligned, Button 2 is centered
485 - use of spacers to set a gap between the Buttons
486 - better way?
487 """
488
489 def __init__(self, parent):
490 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
491
492 wgreen = ColWin(self, wx.NewId(), wx.NamedColour('green'))
493 b1 = wx.Button(self, wx.NewId(), 'button1', (-1, -1), wx.DefaultSize)
494 b2 = wx.Button(self, wx.NewId(), 'button2', (-1, -1), wx.DefaultSize)
495 b3 = wx.Button(self, wx.NewId(), 'button3', (-1, -1), wx.DefaultSize)
496
497 b = 0
498 vsizer1 = wx.BoxSizer(wx.VERTICAL)
499 vsizer1.Add(b1, 0, wx.ALL, b)
500 vsizer1.Add((-1, -1), 1)
501 vsizer1.Add(b2, 0, wx.ALL, b)
502 vsizer1.Add((-1, -1), 1)
503 vsizer1.Add(b3, 0, wx.ALL, b)
504
505 b = 5
506 hsizer2 = wx.BoxSizer(wx.HORIZONTAL)
507 hsizer2.Add(vsizer1, 0, wx.EXPAND | wx.ALL, b)
508 hsizer2.Add(wgreen, 1, wx.EXPAND | wx.ALL, b)
509 self.SetSizer(hsizer2)
510
511
512
513 class MyPanel_17(wx.Panel):
514 """
515 - an input box
516 """
517
518 def __init__(self, parent):
519 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
520 self.parent = parent
521
522 s = 'abc' + os.linesep + 'def' + os.linesep + 'ghi'
523 statxt = wx.StaticText(self, -1, s, (-1, -1), (-1, -1))
524 txt = wx.TextCtrl(self, wx.NewId(), 'input', (-1, -1), (-1, -1))
525 staline = wx.StaticLine(self, -1, (-1, -1), (-1, -1), wx.LI_HORIZONTAL)
526
527 b1 = wx.Button(self, wx.NewId(), "&OK", (-1, -1), wx.DefaultSize)
528 b2 = wx.Button(self, wx.NewId(), "&Cancel", (-1, -1), wx.DefaultSize)
529
530 b = 10
531 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
532 hsizer1.Add(b1, 0)
533 hsizer1.Add(b2, 0, wx.LEFT, b)
534
535 b = 5
536 vsizer1 = wx.BoxSizer(wx.VERTICAL)
537 vsizer1.Add(statxt, 0, wx.GROW | wx.ALL, b)
538 vsizer1.Add(txt, 0, wx.GROW | wx.ALL, b)
539 vsizer1.Add(staline, 0, wx.GROW | wx.ALL, b)
540 vsizer1.Add(hsizer1, 0, wx.ALIGN_RIGHT | wx.ALL, b)
541 vsizer1.SetMinSize((300, -1))
542 self.SetSizerAndFit(vsizer1)
543
544
545
546 self.parent.SetClientSize(vsizer1.GetSize())
547
548
549
550 class MyPanel_18(wx.Panel):
551 """
552 - a message box
553 """
554
555 def __init__(self, parent):
556 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
557 self.parent = parent
558
559 s = 'This is a rather long message with.'
560 s += (os.linesep + 'a lot of lines...')*20
561
562 statxt = wx.StaticText(self, -1, s, (-1, -1), (-1, -1))
563 staline = wx.StaticLine(self, -1, (-1, -1), (-1, -1), wx.LI_HORIZONTAL)
564 b1 = wx.Button(self, wx.NewId(), "&OK", (-1, -1), wx.DefaultSize)
565
566 b = 5
567 vsizer1 = wx.BoxSizer(wx.VERTICAL)
568 vsizer1.Add(statxt, 1, wx.EXPAND | wx.ALL, b)
569 vsizer1.Add(staline, 0, wx.GROW | wx.ALL, b)
570 vsizer1.Add(b1, 0, wx.ALIGN_CENTER | wx.ALL, b)
571 vsizer1.SetMinSize((200, -1))
572 self.SetSizerAndFit(vsizer1)
573
574 self.parent.SetClientSize(vsizer1.GetSize())
575
576
577
578 class MyPanel_19(wx.Panel):
579 """
580 - a serie of couples, StaticText-TextCtrl
581 - Buttons ok and cancel
582 """
583
584 def __init__(self, parent):
585 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
586 self.parent = parent
587
588 lab1 = wx.StaticText(self, -1, 'hydrogen :', (-1, -1), (-1, -1), wx.ALIGN_RIGHT)
589 lab2 = wx.StaticText(self, -1, 'tin :', (-1, -1), (-1, -1), wx.ALIGN_RIGHT)
590 lab3 = wx.StaticText(self, -1, 'mendelevium :', (-1, -1), (-1, -1), wx.ALIGN_RIGHT)
591 lab4 = wx.StaticText(self, -1, 'carbon :', (-1, -1), (-1, -1), wx.ALIGN_RIGHT)
592 txt1 = wx.TextCtrl(self, -1, '', (-1, -1), (-1, -1))
593 txt2 = wx.TextCtrl(self, -1, '', (-1, -1), (-1, -1))
594 txt3 = wx.TextCtrl(self, -1, '', (-1, -1), (-1, -1))
595 txt4 = wx.TextCtrl(self, -1, '', (-1, -1), (-1, -1))
596 b1 = wx.Button(self, wx.NewId(), '&OK', (-1, -1), wx.DefaultSize)
597 b2 = wx.Button(self, wx.NewId(), '&Cancel', (-1, -1), wx.DefaultSize)
598 staline = wx.StaticLine(self, wx.NewId(), (-1, -1), (-1, 2), wx.LI_HORIZONTAL)
599
600 b = 5
601 w = 100
602 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
603 hsizer1.Add(lab1, 0, wx.RIGHT, b)
604 hsizer1.Add(txt1, 1, wx.GROW, b)
605 hsizer1.SetItemMinSize(lab1, (w, -1))
606
607 hsizer2 = wx.BoxSizer(wx.HORIZONTAL)
608 hsizer2.Add(lab2, 0, wx.RIGHT, b)
609 hsizer2.Add(txt2, 1, wx.GROW, b)
610 hsizer2.SetItemMinSize(lab2, (w, -1))
611
612 hsizer3 = wx.BoxSizer(wx.HORIZONTAL)
613 hsizer3.Add(lab3, 0, wx.RIGHT, b)
614 hsizer3.Add(txt3, 1, wx.GROW, b)
615 hsizer3.SetItemMinSize(lab3, (w, -1))
616
617 hsizer4 = wx.BoxSizer(wx.HORIZONTAL)
618 hsizer4.Add(lab4, 0, wx.RIGHT, b)
619 hsizer4.Add(txt4, 1, wx.GROW, b)
620 hsizer4.SetItemMinSize(lab4, (w, -1))
621
622 hsizer5 = wx.BoxSizer(wx.HORIZONTAL)
623 hsizer5.Add(b1, 0)
624 hsizer5.Add(b2, 0, wx.LEFT, 10)
625
626 b = 5
627 vsizer1 = wx.BoxSizer(wx.VERTICAL)
628 vsizer1.Add(hsizer1, 0, wx.EXPAND | wx.ALL, b)
629 vsizer1.Add(hsizer2, 0, wx.EXPAND | wx.ALL, b)
630 vsizer1.Add(hsizer3, 0, wx.EXPAND | wx.ALL, b)
631 vsizer1.Add(hsizer4, 0, wx.EXPAND | wx.ALL, b)
632 vsizer1.Add(staline, 0, wx.GROW | wx.ALL, b)
633 vsizer1.Add(hsizer5, 0, wx.ALIGN_RIGHT | wx.ALL, b)
634
635 self.SetSizerAndFit(vsizer1)
636 self.parent.SetClientSize(vsizer1.GetSize())
637
638
639
640 class MyPanel_20(wx.Panel):
641 """
642 - a FlexGridSizer
643 - 4 ColWins as cells, all sizeable
644 """
645
646 def __init__(self, parent):
647 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
648
649 wred = ColWin(self, -1, wx.RED)
650 wblue = ColWin(self, -1, wx.BLUE)
651 wwhite = ColWin(self, -1, wx.WHITE)
652 wcyan = ColWin(self, -1, wx.CYAN)
653
654 hgap, vgap = 0, 0
655 nrows, ncols = 2, 2
656 fgs = wx.FlexGridSizer(nrows, ncols, hgap, vgap)
657
658 b = 5
659 fgs.AddMany([(wred, 1, wx.EXPAND | wx.ALL, b),
660 (wblue, 1, wx.EXPAND | wx.ALL, b),
661 (wwhite, 1, wx.EXPAND | wx.ALL, b),
662 (wcyan, 1, wx.EXPAND | wx.ALL, b),
663 ])
664
665
666
667
668
669
670
671
672 fgs.AddGrowableRow(0)
673 fgs.AddGrowableRow(1)
674 fgs.AddGrowableCol(0)
675 fgs.AddGrowableCol(1)
676
677 self.SetSizer(fgs)
678
679
680
681 class MyPanel_21(wx.Panel):
682 """
683 - a FlexgridSizer with 4 cells
684 - cell (0, 0) is a column of 3 Buttons
685 - cell (0, 1) is a ColWin
686 - cell (1, 0) is empty
687 - cell (1, 1) is a row of 3 Buttons
688 """
689
690 def __init__(self, parent):
691 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
692
693 wwhite = ColWin(self, -1, wx.WHITE)
694 b1 = wx.Button(self, -1, 'button1', (-1, -1), wx.DefaultSize)
695 b2 = wx.Button(self, -1, 'button2', (-1, -1), wx.DefaultSize)
696 b3 = wx.Button(self, -1, 'button3', (-1, -1), wx.DefaultSize)
697 b4 = wx.Button(self, -1, 'button4', (-1, -1), wx.DefaultSize)
698 b5 = wx.Button(self, -1, 'button5', (-1, -1), wx.DefaultSize)
699 b6 = wx.Button(self, -1, 'button6', (-1, -1), wx.DefaultSize)
700
701 b = 0
702 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
703 hsizer1.Add(b1, 0, wx.ALL, b)
704 hsizer1.Add((-1, -1), 1)
705 hsizer1.Add(b2, 0, wx.ALL, b)
706 hsizer1.Add((-1, -1), 1)
707 hsizer1.Add(b3, 0, wx.ALL, b)
708
709 b = 0
710 vsizer1 = wx.BoxSizer(wx.VERTICAL)
711 vsizer1.Add(b4, 0, wx.ALL, b)
712 vsizer1.Add((-1, -1), 1)
713 vsizer1.Add(b5, 0, wx.ALL, b)
714 vsizer1.Add((-1, -1), 1)
715 vsizer1.Add(b6, 0, wx.ALL, b)
716
717 hgap, vgap = 0, 0
718 nrows, ncols = 2, 2
719 fgs = wx.FlexGridSizer(nrows, ncols, hgap, vgap)
720
721 b = 5
722 fgs.AddMany([(vsizer1, 1, wx.EXPAND | wx.ALL, b),
723 (wwhite, 1, wx.EXPAND | wx.ALL, b),
724 ((-1, -1), 1, wx.EXPAND | wx.ALL, b),
725 (hsizer1, 1, wx.EXPAND | wx.ALL, b),
726 ])
727
728
729 fgs.AddGrowableRow(0)
730 fgs.AddGrowableCol(1)
731
732 self.SetSizer(fgs)
733
734
735
736 class MyPanel_22(wx.Panel):
737 """
738 - a FlexGridSizer of 9 cells (3x3) with 5 ColWins in cells and 4 empty cells
739 """
740
741 def __init__(self, parent):
742 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
743
744 wwhite = ColWin(self, -1, wx.WHITE)
745 wblue = ColWin(self, -1, wx.BLUE)
746 wgreen = ColWin(self, -1, wx.GREEN)
747 wcyan = ColWin(self, -1, wx.CYAN)
748 wred = ColWin(self, -1, wx.RED)
749
750 hgap, vgap = 0, 0
751 nrows, ncols = 3, 3
752 fgs = wx.FlexGridSizer(nrows, ncols, hgap, vgap)
753
754 b = 5
755 fgs.AddMany([(wwhite, 1, wx.EXPAND | wx.ALL, b),
756 ((-1, -1), 1, wx.EXPAND | wx.ALL, b),
757 (wblue, 1, wx.EXPAND | wx.ALL, b),
758
759 ((-1, -1), 1, wx.EXPAND | wx.ALL, b),
760 (wgreen, 1, wx.EXPAND | wx.ALL, b),
761 ((-1, -1), 1, wx.EXPAND | wx.ALL, b),
762
763 (wred, 1, wx.EXPAND | wx.ALL, b),
764 ((-1, -1), 1, wx.EXPAND | wx.ALL, b),
765 (wcyan, 1, wx.EXPAND | wx.ALL, b),
766 ])
767
768 fgs.AddGrowableRow(0)
769 fgs.AddGrowableRow(1)
770 fgs.AddGrowableRow(2)
771
772 fgs.AddGrowableCol(0)
773 fgs.AddGrowableCol(1)
774 fgs.AddGrowableCol(2)
775
776 self.SetSizer(fgs)
777
778
779
780 class MyPanel_23(wx.Panel):
781 """
782 - a FlexGridSizer of 9 cells (3x3) with 4 ColWins in cells and 5 empty cells
783 - rows 1 and 3 have a fixed size
784 """
785
786 def __init__(self, parent):
787 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
788
789 h = 40
790 wwhite = wx.Window(self, -1, (-1, -1), (-1, h), wx.SIMPLE_BORDER)
791 wwhite.SetBackgroundColour(wx.WHITE)
792 wblue = ColWin(self, -1, wx.BLUE)
793 wgreen = ColWin(self, -1, wx.GREEN)
794 wred = wx.Window(self, -1, (-1, -1), (-1, h), wx.SIMPLE_BORDER)
795 wred.SetBackgroundColour(wx.RED)
796
797 hgap, vgap = 0, 0
798 nrows, ncols = 3, 3
799 fgs = wx.FlexGridSizer(nrows, ncols, hgap, vgap)
800
801 b = 5
802 fgs.AddMany([((-1, -1), 1, wx.EXPAND | wx.ALL, b),
803 (wwhite, 1, wx.EXPAND | wx.ALL, b),
804 ((-1, -1), 1, wx.EXPAND | wx.ALL, b),
805
806 (wblue, 1, wx.EXPAND | wx.ALL, b),
807 ((-1, -1), 1, wx.EXPAND | wx.ALL, b),
808 (wgreen, 1, wx.EXPAND | wx.ALL, b),
809
810 ((-1, -1), 1, wx.EXPAND | wx.ALL, b),
811 (wred, 1, wx.EXPAND | wx.ALL, b),
812 ((-1, -1), 1, wx.EXPAND | wx.ALL, b),
813 ])
814
815 fgs.AddGrowableRow(1)
816
817 fgs.AddGrowableCol(0)
818 fgs.AddGrowableCol(1)
819 fgs.AddGrowableCol(2)
820
821 self.SetSizer(fgs)
822
823
824
825 class MyPanel_24(wx.Panel):
826 """
827 - this exemple is coming from one of my applications
828 - in the real app, the white window is a drawing area and
829 the five lower windows are StaticTexts with a defined
830 font size. This is why I force a fixed height.
831 """
832
833 def __init__(self, parent):
834 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
835 self.parent = parent
836
837
838 menu1 = wx.Menu()
839 menu1.Append(101, '&aaa')
840 menuBar = wx.MenuBar()
841 menuBar.Append(menu1, '&File')
842 self.parent.SetMenuBar(menuBar)
843
844 wwhite = ColWin(self, -1, wx.WHITE)
845 wblue = ColWin(self, -1, wx.BLUE)
846 wgreen = ColWin(self, -1, wx.GREEN)
847 wcyan = ColWin(self, -1, wx.CYAN)
848 wred = ColWin(self, -1, wx.RED)
849 wcoral = ColWin(self, -1, wx.NamedColour('coral'))
850 staline = wx.StaticLine(self, -1, (-1, -1), (-1, 2), wx.LI_HORIZONTAL)
851
852 vsizer1 = wx.BoxSizer(wx.VERTICAL)
853 b = 5
854 vsizer1.Add(wblue, 1, wx.EXPAND | wx.BOTTOM, b)
855 vsizer1.Add(wgreen, 1, wx.EXPAND)
856
857 hsizer2 = wx.BoxSizer(wx.HORIZONTAL)
858 b = 5
859 minhe = 100
860 hsizer2.Add(wcoral, 2, wx.EXPAND | wx.RIGHT, b)
861 hsizer2.Add(wcyan, 3, wx.EXPAND | wx.RIGHT, b)
862 hsizer2.Add(wred, 3, wx.EXPAND | wx.RIGHT, b)
863 hsizer2.Add(vsizer1, 2, wx.EXPAND, border=b)
864 hsizer2.SetItemMinSize(wcoral, (-1, minhe))
865 hsizer2.SetItemMinSize(wcyan, (-1, minhe))
866 hsizer2.SetItemMinSize(wred, (-1, minhe))
867 hsizer2.SetItemMinSize(vsizer1, (-1, minhe))
868
869 vsizer3 = wx.BoxSizer(wx.VERTICAL)
870 b = 5
871 vsizer3.Add(staline, 0, wx.GROW | wx.ALL, 0)
872 vsizer3.Add(wwhite, 1, wx.EXPAND | wx.TOP | wx.LEFT | wx.RIGHT, b)
873 vsizer3.Add(hsizer2, 0, wx.EXPAND | wx.ALL, b)
874
875 self.SetSizerAndFit(vsizer3)
876
877
878
879 class MyPanel_25(wx.Panel):
880 """
881 - this shows the relaton between the font size and the size of the
882 widgets when sizers are used
883 """
884
885 def __init__(self, parent):
886 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
887 self.parent = parent
888
889 fs = 20
890 self.SetFont(wx.Font(fs, wx.DEFAULT, wx.NORMAL, wx.NORMAL, False))
891
892 statxt1 = wx.StaticText(self, -1, 'one, two, three', (-1, -1), (-1, -1))
893 statxt1.SetBackgroundColour(wx.WHITE)
894 statxt2 = wx.StaticText(self, -1, 'eins, zwei, drei', (-1, -1), (-1, -1))
895 statxt3 = wx.StaticText(self, -1, 'un, deux, trois', (-1, -1), (-1, -1))
896 b1 = wx.Button(self, wx.NewId(), 'button1', (-1, -1), (-1, -1))
897 b2 = wx.Button(self, wx.NewId(), 'button2', (-1, -1), (-1, -1))
898
899 b = 5
900 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
901 hsizer1.Add(b1, 1, wx.EXPAND | wx.ALL, b)
902 hsizer1.Add(b2, 1, wx.EXPAND | wx.ALL, b)
903
904 vsizer1 = wx.BoxSizer(wx.VERTICAL)
905 vsizer1.Add(statxt1, 0, wx.ALL, b)
906 vsizer1.Add(statxt2, 0, wx.ALL, b)
907 vsizer1.Add(statxt3, 0, wx.ALL, b)
908 vsizer1.Add(hsizer1, 0, wx.ALL, b)
909
910 self.SetSizerAndFit(vsizer1)
911 self.parent.SetClientSize(vsizer1.GetSize())
912
913
914
915 class MyPanel_26(wx.Panel):
916 """
917 - a GridBagSizer of 4 cells (2x2)
918 - Note: cell spanning is always specified
919 - gbs.Add.__doc__ : Add(self, item, GBPosition pos,
920 GBSpan span=DefaultSpan, int flag=0,
921 int border=0, userData=None) -> wx.GBSizerItem
922 """
923
924 def __init__(self, parent):
925 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
926
927 wwhite = ColWin(self, -1, wx.WHITE)
928 wblue = ColWin(self, -1, wx.BLUE)
929 wgreen = ColWin(self, -1, wx.GREEN)
930 wred = ColWin(self, -1, wx.RED)
931
932 vgap, hgap = 10, 20
933 gbs = wx.GridBagSizer(vgap, hgap)
934
935 b = 0
936 gbs.Add(wwhite, (0, 0), (1, 1), wx.EXPAND | wx.ALL, b)
937 gbs.Add(wblue, (0, 1), (1, 1), wx.EXPAND | wx.ALL, b)
938 gbs.Add(wgreen, (1, 0), (1, 1), wx.EXPAND | wx.ALL, b)
939 gbs.Add(wred, (1, 1), (1, 1), wx.EXPAND | wx.ALL, b)
940
941 gbs.AddGrowableRow(0)
942 gbs.AddGrowableRow(1)
943 gbs.AddGrowableCol(0)
944 gbs.AddGrowableCol(1)
945
946 self.SetSizer(gbs)
947
948
949
950 class MyPanel_27(wx.Panel):
951 """
952 - a GridBagSizer of 9 cells (3x3)
953 - Note: cell spanning is always specified
954 - vgap and hgap define the space between the cells and not
955 between the cells and the border of the panel/frame.
956 This example creates a constant spacing for all cells.
957
958 """
959
960 def __init__(self, parent):
961 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
962
963 wwhite = ColWin(self, -1, wx.WHITE)
964 wblue = ColWin(self, -1, wx.BLUE)
965 wgreen = ColWin(self, -1, wx.GREEN)
966 wred = ColWin(self, -1, wx.RED)
967 wblack = ColWin(self, -1, wx.BLACK)
968 wpink = ColWin(self, -1, wx.NamedColour('pink'))
969 wyellow = ColWin(self, -1, wx.NamedColour('yellow'))
970 wcyan = ColWin(self, -1, wx.NamedColour('cyan'))
971 worange = ColWin(self, -1, wx.NamedColour('orange'))
972
973 vgap = hgap = 10
974 gbs = wx.GridBagSizer(vgap, hgap)
975
976 b = vgap
977 gbs.Add(wwhite, (0, 0), (1, 1), wx.EXPAND | wx.LEFT | wx.TOP, b)
978 gbs.Add(wblue, (0, 1), (1, 1), wx.EXPAND | wx.TOP, b)
979 gbs.Add(wgreen, (0, 2), (1, 1), wx.EXPAND | wx.RIGHT | wx.TOP, b)
980
981 gbs.Add(wred, (1, 0), (1, 1), wx.EXPAND | wx.LEFT, b)
982 gbs.Add(wblack, (1, 1), (1, 1), wx.EXPAND)
983 gbs.Add(wpink, (1, 2), (1, 1), wx.EXPAND | wx.RIGHT, b)
984
985 gbs.Add(wyellow, (2, 0), (1, 1), wx.EXPAND | wx.LEFT | wx.BOTTOM, b)
986 gbs.Add(wcyan, (2, 1), (1, 1), wx.EXPAND | wx.BOTTOM, b)
987 gbs.Add(worange, (2, 2), (1, 1), wx.EXPAND | wx.RIGHT | wx.BOTTOM, b)
988
989 gbs.AddGrowableRow(0)
990 gbs.AddGrowableRow(1)
991 gbs.AddGrowableRow(2)
992 gbs.AddGrowableCol(0)
993 gbs.AddGrowableCol(1)
994 gbs.AddGrowableCol(2)
995
996 self.SetSizer(gbs)
997
998
999
1000 class MyPanel_28(wx.Panel):
1001 """
1002 - a GridBagSizer of 9 cells (3x3)
1003 - Layout like MyPanel_27, uses a secondary sizer to get a border
1004 """
1005
1006 def __init__(self, parent):
1007 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
1008
1009 wwhite = ColWin(self, -1, wx.WHITE)
1010 wblue = ColWin(self, -1, wx.BLUE)
1011 wgreen = ColWin(self, -1, wx.GREEN)
1012 wred = ColWin(self, -1, wx.RED)
1013 wblack = ColWin(self, -1, wx.BLACK)
1014 wpink = ColWin(self, -1, wx.NamedColour('pink'))
1015 wyellow = ColWin(self, -1, wx.NamedColour('yellow'))
1016 wcyan = ColWin(self, -1, wx.NamedColour('cyan'))
1017 worange = ColWin(self, -1, wx.NamedColour('orange'))
1018
1019 vgap = hgap = 10
1020 gbs = wx.GridBagSizer(vgap, hgap)
1021
1022 b = 0
1023 gbs.Add(wwhite, (0, 0), (1, 1), wx.EXPAND, b)
1024 gbs.Add(wblue, (0, 1), (1, 1), wx.EXPAND, b)
1025 gbs.Add(wgreen, (0, 2), (1, 1), wx.EXPAND, b)
1026
1027 gbs.Add(wred, (1, 0), (1, 1), wx.EXPAND, b)
1028 gbs.Add(wblack, (1, 1), (1, 1), wx.EXPAND)
1029 gbs.Add(wpink, (1, 2), (1, 1), wx.EXPAND, b)
1030
1031 gbs.Add(wyellow, (2, 0), (1, 1), wx.EXPAND, b)
1032 gbs.Add(wcyan, (2, 1), (1, 1), wx.EXPAND, b)
1033 gbs.Add(worange, (2, 2), (1, 1), wx.EXPAND, b)
1034
1035 gbs.AddGrowableRow(0)
1036 gbs.AddGrowableRow(1)
1037 gbs.AddGrowableRow(2)
1038 gbs.AddGrowableCol(0)
1039 gbs.AddGrowableCol(1)
1040 gbs.AddGrowableCol(2)
1041
1042 b = vgap
1043 vsizer1 = wx.BoxSizer(wx.VERTICAL)
1044 vsizer1.Add(gbs, 1, wx.EXPAND | wx.ALL, b)
1045 self.SetSizer(vsizer1)
1046
1047
1048
1049 class MyPanel_29(wx.Panel):
1050 """
1051 - a GridBagSizer of 25 cells (5x5)
1052 - spanning
1053 - cell (1, 1) is empty
1054 - when spanning, cells ovelapping raises an error. This explains
1055 the commented lines for unused coloured windows.
1056 """
1057
1058 def __init__(self, parent):
1059 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
1060
1061 wwhite = ColWin(self, -1, wx.WHITE)
1062
1063
1064 wred = ColWin(self, -1, wx.RED)
1065 wblack = ColWin(self, -1, wx.BLACK)
1066
1067 wpink = ColWin(self, -1, wx.NamedColour('pink'))
1068
1069 wcyan = ColWin(self, -1, wx.NamedColour('cyan'))
1070 worange = ColWin(self, -1, wx.NamedColour('orange'))
1071 wgold = ColWin(self, -1, wx.NamedColour('gold'))
1072
1073 wtan = ColWin(self, -1, wx.NamedColour('tan'))
1074 wcoral = ColWin(self, -1, wx.NamedColour('coral'))
1075
1076 wspringgreen = ColWin(self, -1, wx.NamedColour('spring green'))
1077
1078
1079 wwheat = ColWin(self, -1, wx.NamedColour('wheat'))
1080
1081
1082 wpalegreen = ColWin(self, -1, wx.NamedColour('pale green'))
1083
1084
1085 wnavy = ColWin(self, -1, wx.NamedColour('navy'))
1086 wskyblue = ColWin(self, -1, wx.NamedColour('sky blue'))
1087 wmagenta = ColWin(self, -1, wx.NamedColour('magenta'))
1088 wkhaki = ColWin(self, -1, wx.NamedColour('khaki'))
1089
1090
1091 vgap = hgap = 10
1092 gbs = wx.GridBagSizer(vgap, hgap)
1093
1094 b = 0
1095 gbs.Add(wwhite, (0, 0), (1, 3), wx.EXPAND | wx.ALL, b)
1096
1097
1098 gbs.Add(wred, (0, 3), (1, 1), wx.EXPAND | wx.ALL, b)
1099 gbs.Add(wblack, (0, 4), (1, 1), wx.EXPAND | wx.ALL, b)
1100
1101 gbs.Add(wpink, (1, 0), (1, 1), wx.EXPAND | wx.ALL, b)
1102
1103 gbs.Add(wcyan, (1, 2), (1, 1), wx.EXPAND | wx.ALL, b)
1104 gbs.Add(worange, (1, 3), (1, 1), wx.EXPAND | wx.ALL, b)
1105 gbs.Add(wgold, (1, 4), (4, 1), wx.EXPAND | wx.ALL, b)
1106
1107 gbs.Add(wtan, (2, 0), (1, 1), wx.EXPAND | wx.ALL, b)
1108 gbs.Add(wcoral, (2, 1), (2, 2), wx.EXPAND | wx.ALL, b)
1109
1110 gbs.Add(wspringgreen, (2, 3), (1, 1), wx.EXPAND | wx.ALL, b)
1111
1112
1113 gbs.Add(wwheat, (3, 0), (1, 1), wx.EXPAND | wx.ALL, b)
1114
1115
1116 gbs.Add(wpalegreen, (3, 3), (1, 1), wx.EXPAND | wx.ALL, b)
1117
1118
1119 gbs.Add(wnavy, (4, 0), (1, 1), wx.EXPAND | wx.ALL, b)
1120 gbs.Add(wskyblue, (4, 1), (1, 1), wx.EXPAND | wx.ALL, b)
1121 gbs.Add(wmagenta, (4, 2), (1, 1), wx.EXPAND | wx.ALL, b)
1122 gbs.Add(wkhaki, (4, 3), (1, 1), wx.EXPAND | wx.ALL, b)
1123
1124
1125 gbs.AddGrowableRow(0)
1126 gbs.AddGrowableRow(1)
1127 gbs.AddGrowableRow(2)
1128 gbs.AddGrowableRow(3)
1129 gbs.AddGrowableRow(4)
1130 gbs.AddGrowableCol(0)
1131 gbs.AddGrowableCol(1)
1132 gbs.AddGrowableCol(2)
1133 gbs.AddGrowableCol(3)
1134 gbs.AddGrowableCol(4)
1135
1136 self.SetSizer(gbs)
1137
1138
1139
1140 class MyPanel_30(wx.Panel):
1141 """
1142 - a GridBagSizer of 16 cells (4x4)
1143 """
1144
1145 def __init__(self, parent):
1146 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
1147
1148 wwhite = ColWin(self, -1, wx.WHITE)
1149 wblue = ColWin(self, -1, wx.BLUE)
1150 wgreen = ColWin(self, -1, wx.GREEN)
1151 wred = ColWin(self, -1, wx.RED)
1152
1153 wpink = ColWin(self, -1, wx.NamedColour('pink'))
1154 wyellow = ColWin(self, -1, wx.NamedColour('yellow'))
1155 wcyan = ColWin(self, -1, wx.NamedColour('cyan'))
1156 worange = ColWin(self, -1, wx.NamedColour('orange'))
1157
1158 wtan = ColWin(self, -1, wx.NamedColour('tan'))
1159 wcoral = ColWin(self, -1, wx.NamedColour('coral'))
1160 wplum = ColWin(self, -1, wx.NamedColour('plum'))
1161 wspringgreen = ColWin(self, -1, wx.NamedColour('spring green'))
1162
1163 wwheat = ColWin(self, -1, wx.NamedColour('wheat'))
1164 wvioletred = ColWin(self, -1, wx.NamedColour('violet red'))
1165 wgoldenrod = ColWin(self, -1, wx.NamedColour('goldenrod'))
1166 wpalegreen = ColWin(self, -1, wx.NamedColour('pale green'))
1167
1168 vgap = hgap = 10
1169 gbs = wx.GridBagSizer(vgap, hgap)
1170
1171 b = 0
1172 gbs.Add(wwhite, (0, 0), (1, 1), wx.EXPAND | wx.ALL, b)
1173 gbs.Add(wblue, (0, 1), (1, 1), wx.EXPAND | wx.ALL, b)
1174 gbs.Add(wgreen, (0, 2), (1, 1), wx.EXPAND | wx.ALL, b)
1175 gbs.Add(wred, (0, 3), (1, 1), wx.EXPAND | wx.ALL, b)
1176
1177 gbs.Add(wpink, (1, 0), (1, 1), wx.EXPAND | wx.ALL, b)
1178 gbs.Add(wyellow, (1, 1), (1, 1), wx.EXPAND | wx.ALL, b)
1179 gbs.Add(wcyan, (1, 2), (1, 1), wx.EXPAND | wx.ALL, b)
1180 gbs.Add(worange, (1, 3), (1, 1), wx.EXPAND | wx.ALL, b)
1181
1182 gbs.Add(wtan, (2, 0), (1, 1), wx.EXPAND | wx.ALL, b)
1183 gbs.Add(wcoral, (2, 1), (1, 1), wx.EXPAND | wx.ALL, b)
1184 gbs.Add(wplum, (2, 2), (1, 1), wx.EXPAND | wx.ALL, b)
1185 gbs.Add(wspringgreen, (2, 3), (1, 1), wx.EXPAND | wx.ALL, b)
1186
1187 gbs.Add(wwheat, (3, 0), (1, 1), wx.EXPAND | wx.ALL, b)
1188 gbs.Add(wvioletred, (3, 1), (1, 1), wx.EXPAND | wx.ALL, b)
1189 gbs.Add(wgoldenrod, (3, 2), (1, 1), wx.EXPAND | wx.ALL, b)
1190 gbs.Add(wpalegreen, (3, 3), (1, 1), wx.EXPAND | wx.ALL, b)
1191
1192 gbs.AddGrowableRow(0)
1193 gbs.AddGrowableRow(1)
1194
1195 gbs.AddGrowableRow(3)
1196 gbs.AddGrowableCol(0)
1197 gbs.AddGrowableCol(1)
1198
1199 gbs.AddGrowableCol(3)
1200
1201 self.SetSizer(gbs)
1202
1203
1204
1205 print gbs.SetDimension.__doc__
1206
1207
1208
1209 class MyPanel_31(wx.Panel):
1210 """
1211 - based on MyPanel_15 where the central button has been replaced by
1212 an horizontal sizer conaining two buttons.
1213 """
1214
1215 def __init__(self, parent):
1216 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
1217
1218 wgreen = ColWin(self, wx.NewId(), wx.NamedColour('green'))
1219 b1 = wx.Button(self, wx.NewId(), 'button1', (-1, -1), wx.DefaultSize)
1220 b2 = wx.Button(self, wx.NewId(), 'button2', (-1, -1), wx.DefaultSize)
1221 b3 = wx.Button(self, wx.NewId(), 'button3', (-1, -1), wx.DefaultSize)
1222 b4 = wx.Button(self, wx.NewId(), 'button4', (-1, -1), wx.DefaultSize)
1223
1224 b = 0
1225 hsizer1a = wx.BoxSizer(wx.HORIZONTAL)
1226 hsizer1a.Add(b2, 0, wx.ALL, b)
1227 hsizer1a.Add(b3, 0, wx.ALL, b)
1228
1229 b = 0
1230 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
1231 hsizer1.Add(b1, 0, wx.ALL, b)
1232 hsizer1.Add((-1, -1), 1)
1233 hsizer1.Add(hsizer1a, 0, wx.ALL, b)
1234 hsizer1.Add((-1, -1), 1)
1235 hsizer1.Add(b4, 0, wx.ALL, b)
1236
1237 b = 0
1238 hsizer1b = wx.BoxSizer(wx.HORIZONTAL)
1239 hsizer1b.Add((-1, -1), 1)
1240 hsizer1b.Add(wgreen, 1, wx.EXPAND | wx.ALL, b)
1241 hsizer1b.Add((-1, -1), 1)
1242
1243 b = 5
1244 vsizer2 = wx.BoxSizer(wx.VERTICAL)
1245 vsizer2.Add(hsizer1, 0, wx.EXPAND | wx.ALL, b)
1246
1247 vsizer2.Add(hsizer1b, 1, wx.EXPAND | wx.ALL, b)
1248 self.SetSizer(vsizer2)
1249
1250
1251
1252 class TestComboBox(wx.Panel):
1253 def __init__(self, parent, id):
1254 wx.Panel.__init__(self, parent, id)
1255
1256 sampleList = []
1257 for i in range(0, 32):
1258 sampleList.append('MyPanel_' + str(i))
1259
1260 self.st = wx.StaticText(self, -1, "Select the example you want to see."
1261 "Then click the View button.", (-1, -1))
1262
1263 self.doctxt = wx.StaticText(self, -1, "")
1264 self.doctxt.SetLabel(MyPanel_0.__doc__)
1265
1266
1267 self.cb = wx.ComboBox(self, -1, "MyPanel_0", (-1, -1),
1268 (-1, -1), sampleList, wx.CB_DROPDOWN | wx.CB_READONLY
1269 )
1270
1271 self.stline = wx.StaticLine(self, -1, (-1, -1), (-1, 2), wx.LI_HORIZONTAL)
1272
1273 btnView = wx.Button(self, -1, "&View")
1274 self.Bind(wx.EVT_BUTTON, self.OnClickView, btnView)
1275
1276 btnExit = wx.Button(self, -1, "E&xit")
1277 self.Bind(wx.EVT_BUTTON, self.OnClickExit, btnExit)
1278
1279 b = 5
1280 vsizer1 = wx.BoxSizer(wx.VERTICAL)
1281 vsizer1.Add(self.st, 0, wx.EXPAND | wx.ALL, b)
1282 vsizer1.Add(self.cb, 0, wx.EXPAND | wx.ALL, 0)
1283 vsizer1.Add(self.doctxt, 0, wx.EXPAND | wx.ALL, b)
1284
1285 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
1286 hsizer1.Add(btnView, 0)
1287 hsizer1.Add(btnExit, 0, wx.LEFT, b)
1288
1289 vsizer2 = wx.BoxSizer(wx.VERTICAL)
1290 vsizer2.Add(vsizer1, 5, wx.EXPAND | wx.ALL, 0)
1291 vsizer2.Add(self.stline, 0, wx.GROW | wx.ALL, b)
1292 vsizer2.Add(hsizer1, 1, wx.ALIGN_RIGHT | wx.ALL, b)
1293 self.SetSizer(vsizer2)
1294
1295 self.Bind(wx.EVT_COMBOBOX, self.OnEvtComboBox, self.cb)
1296
1297
1298
1299
1300 def OnEvtComboBox(self, evt):
1301 self.doctxt.SetLabel(eval('%s.__doc__' % evt.GetString()))
1302
1303 def OnClickView(self, evt):
1304 win = wx.Frame(self, -1, self.cb.GetValue(), size=(500, 300),
1305 style = wx.DEFAULT_FRAME_STYLE)
1306 eval('%s(win)' % self.cb.GetValue())
1307
1308 win.CenterOnScreen()
1309 win.Show(True)
1310
1311 def OnClickExit(self, evt):
1312 sys.exit()
1313
1314
1315
1316 class MyApp(wx.App):
1317
1318 def OnInit(self):
1319 frame = wx.Frame(None, -1, __file__, (0, 0), (450, 300))
1320 frame.panel = TestComboBox(frame, -1)
1321 frame.Show(True)
1322 self.SetTopWindow(frame)
1323 return True
1324
1325
1326
1327 def main():
1328 app = MyApp(False)
1329 app.MainLoop()
1330
1331
1332
1333 if __name__ == "__main__" :
1334 main()
1335
1336