1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 import os
33 import sys
34 import wx
35
36 class ColWin(wx.Window):
37 """- A wx.Window with a coloured background
38 - pos and size == (-1, -1) since sizers are used"""
39
40 def __init__(self, parent, id, BackColour):
41 wx.Window.__init__(self, parent, id, (-1, -1), (-1, -1), wx.SIMPLE_BORDER)
42 self.SetBackgroundColour(BackColour)
43
44
45 class MyPanel_0(wx.Panel):
46 """- The simpliest sizer, a ColWin
47 - use of named arguments"""
48
49 def __init__(self, parent):
50 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
51
52 wgreen = ColWin(self, wx.NewId(), wx.GREEN)
53
54 b = 20
55 vsizer1 = wx.BoxSizer(orient=wx.VERTICAL)
56
57
58 vsizer1.Add(item=wgreen, proportion=1, flag=wx.EXPAND | wx.ALL, border=b)
59 self.SetSizer(vsizer1)
60
61
62 class MyPanel_1(wx.Panel):
63 """- Two ColWins, vertically"""
64
65 def __init__(self, parent):
66 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
67
68 wred = ColWin(self, wx.NewId(), wx.RED)
69 wblue = ColWin(self, wx.NewId(), wx.BLUE)
70
71 b = 5
72 vsizer1 = wx.BoxSizer(wx.VERTICAL)
73 vsizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
74 vsizer1.Add(wblue, 1, wx.EXPAND | wx.ALL, b)
75 self.SetSizer(vsizer1)
76
77
78 class MyPanel_2(wx.Panel):
79 """- Three ColWins, horizontally """
80
81 def __init__(self, parent):
82 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
83
84 wred = ColWin(self, wx.NewId(), wx.RED)
85 wblue = ColWin(self, wx.NewId(), wx.BLUE)
86 wgreen = ColWin(self, wx.NewId(), wx.GREEN)
87
88 b = 5
89 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
90 hsizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
91 hsizer1.Add(wblue, 1, wx.EXPAND | wx.ALL, b)
92 hsizer1.Add(wgreen, 1, wx.EXPAND | wx.ALL, b)
93 self.SetSizer(hsizer1)
94
95
96 class MyPanel_3(wx.Panel):
97 """- Three ColWins, horizontally, height ratio 1:2:3"""
98
99 def __init__(self, parent):
100 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
101
102 wred = ColWin(self, wx.NewId(), wx.RED)
103 wblue = ColWin(self, wx.NewId(), wx.BLUE)
104 wgreen = ColWin(self, wx.NewId(), wx.GREEN)
105
106 b = 5
107 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
108 hsizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
109 hsizer1.Add(wblue, 2, wx.EXPAND | wx.ALL, b)
110 hsizer1.Add(wgreen, 3, wx.EXPAND | wx.ALL, b)
111 self.SetSizer(hsizer1)
112
113
114 class MyPanel_4(wx.Panel):
115 """- Two ColWins, vertically, a fixed width of 50 pixels between
116 the two items"""
117
118 def __init__(self, parent):
119 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
120
121 wred = ColWin(self, wx.NewId(), wx.RED)
122 wblue = ColWin(self, wx.NewId(), wx.BLUE)
123
124 b = 5
125 vsizer1 = wx.BoxSizer(wx.VERTICAL)
126 vsizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
127 vsizer1.Add((-1, 50), 0, wx.ALL, b)
128 vsizer1.Add(wblue, 1, wx.EXPAND | wx.ALL, b)
129 self.SetSizer(vsizer1)
130
131
132 class MyPanel_5(wx.Panel):
133 """- Two items: a ColWin and a Button, vertically
134 - the Button is either left/right aligned or centered
135 - comment / uncomment for testing the Button alignment
136 - wx.ALIGN_LEFT is the default value"""
137
138 def __init__(self, parent):
139 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
140
141 wred = ColWin(self, wx.NewId(), wx.RED)
142 b1 = wx.Button(self, wx.NewId(), 'button1', (-1, -1), wx.DefaultSize)
143
144 b = 5
145 vsizer1 = wx.BoxSizer(wx.VERTICAL)
146 vsizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
147
148
149
150 vsizer1.Add(b1, 0, wx.ALIGN_CENTER | wx.ALL, b)
151 self.SetSizer(vsizer1)
152
153
154 class MyPanel_6(wx.Panel):
155 """- Three items: a ColWin and two Buttons
156 - the Buttons are either left/right aligned or centered"""
157
158 def __init__(self, parent):
159 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
160
161 wred = ColWin(self, wx.NewId(), wx.RED)
162 b1 = wx.Button(self, wx.NewId(), '&OK', (-1, -1), wx.DefaultSize)
163 b2 = wx.Button(self, wx.NewId(), '&Cancel', (-1, -1), wx.DefaultSize)
164
165 b = 10
166 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
167 hsizer1.Add(b1, 0)
168 hsizer1.Add(b2, 0, wx.LEFT, b)
169
170 b = 5
171 vsizer1 = wx.BoxSizer(wx.VERTICAL)
172 vsizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
173 vsizer1.Add(hsizer1, 0, wx.ALIGN_RIGHT | wx.ALL, b)
174
175
176 self.SetSizer(vsizer1)
177
178
179 class MyPanel_7(wx.Panel):
180 """- Four items: a ColWin, two Buttons, and a StaticLine
181 - the Buttons are either left/right aligned or centered
182 - the height of the static line == 2, the wx.GROW flag specifies an
183 horizontal expansion, since the StaticLine is in a vertical sizer"""
184
185 def __init__(self, parent):
186 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
187
188 wred = ColWin(self, wx.NewId(), wx.RED)
189 b1 = wx.Button(self, wx.NewId(), '&OK', (-1, -1), wx.DefaultSize)
190 b2 = wx.Button(self, wx.NewId(), '&Cancel', (-1, -1), wx.DefaultSize)
191 staline = wx.StaticLine(self, wx.NewId(), (-1, -1), (-1, 2), wx.LI_HORIZONTAL)
192
193 b = 5
194 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
195 hsizer1.Add(b1, 0)
196 hsizer1.Add(b2, 0, wx.LEFT, b)
197
198 vsizer1 = wx.BoxSizer(wx.VERTICAL)
199 vsizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
200 vsizer1.Add(staline, 0, wx.GROW | wx.ALL, b)
201 vsizer1.Add(hsizer1, 0, wx.ALIGN_RIGHT | wx.ALL, b)
202 self.SetSizer(vsizer1)
203
204
205 class MyPanel_8(wx.Panel):
206 """- 7 items: 2 ColWins and 5 Buttons
207 - ColWins: one is sizable, the other not
208 - Buttons at the right of the frame
209 - something like a toolbar at the right"""
210
211 def __init__(self, parent):
212 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
213
214 wred = ColWin(self, wx.NewId(), wx.RED)
215 wwhite = ColWin(self, wx.NewId(), wx.WHITE)
216
217 b1 = wx.Button(self, wx.NewId(), '1', (-1, -1), wx.DefaultSize)
218 b2 = wx.Button(self, wx.NewId(), '2', (-1, -1), wx.DefaultSize)
219 b3 = wx.Button(self, wx.NewId(), '3', (-1, -1), wx.DefaultSize)
220 b4 = wx.Button(self, wx.NewId(), '4', (-1, -1), wx.DefaultSize)
221 b5 = wx.Button(self, wx.NewId(), '5', (-1, -1), wx.DefaultSize)
222
223 vsizer1 = wx.BoxSizer(wx.VERTICAL)
224 b = 3
225 vsizer1.Add(wred, 1, wx.EXPAND | wx.BOTTOM, b)
226 vsizer1.Add(wwhite, 0, wx.EXPAND, b)
227
228 vsizer2 = wx.BoxSizer(wx.VERTICAL)
229 b = 5
230 vsizer2.Add(b1, 0, wx.BOTTOM, b)
231 vsizer2.Add(b2, 0, wx.BOTTOM, b)
232 vsizer2.Add(b3, 0, wx.BOTTOM, b)
233 vsizer2.Add(b4, 0, wx.BOTTOM, b)
234 vsizer2.Add(b5, 0, wx.BOTTOM, b)
235
236 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
237 b = 10
238 hsizer1.Add(vsizer1, 1, wx.EXPAND | wx.LEFT | wx.TOP | wx.BOTTOM, b)
239 hsizer1.Add(vsizer2, 0, wx.EXPAND| wx.ALL, b)
240
241 self.SetSizer(hsizer1)
242
243
244 class MyPanel_9(wx.Panel):
245 """- 7 items: 2 ColWins and 5 Buttons
246 - the ColWins are sizable
247 - the Buttons have a fixed height and a default width
248 - something like a toolbar at the top"""
249
250 def __init__(self, parent):
251 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
252
253 wred = ColWin(self, wx.NewId(), wx.RED)
254 wwhite = ColWin(self, wx.NewId(), wx.WHITE)
255
256 h = 40
257 b1 = wx.Button(self, wx.NewId(), '1', (-1, -1), (-1, h))
258 b2 = wx.Button(self, wx.NewId(), '2', (-1, -1), (-1, h))
259 b3 = wx.Button(self, wx.NewId(), '3', (-1, -1), (-1, h))
260 b4 = wx.Button(self, wx.NewId(), '4', (-1, -1), (-1, h))
261 b5 = wx.Button(self, wx.NewId(), '5', (-1, -1), (-1, h))
262
263 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
264 hsizer1.Add(b1, 0)
265 hsizer1.Add(b2, 0)
266 hsizer1.Add(b3, 0)
267 hsizer1.Add(b4, 0)
268 hsizer1.Add(b5, 0)
269
270 b = 2
271 hsizer2 = wx.BoxSizer(wx.HORIZONTAL)
272 hsizer2.Add(wred, 1, wx.EXPAND | wx.RIGHT, b)
273 hsizer2.Add(wwhite, 1, wx.EXPAND | wx.LEFT, b)
274
275 b = 5
276 vsizer1 = wx.BoxSizer(wx.VERTICAL)
277 vsizer1.Add(hsizer1, 0, wx.EXPAND, b)
278 vsizer1.Add(hsizer2, 1, wx.ALL | wx.EXPAND, b)
279
280 self.SetSizer(vsizer1)
281
282
283 class MyPanel_10(wx.Panel):
284 """- Three ColWins in a StaticBoxSizer, vertically"""
285
286 def __init__(self, parent):
287 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
288
289 wred = ColWin(self, wx.NewId(), wx.RED)
290 wblue = ColWin(self, wx.NewId(), wx.BLUE)
291 wgreen = ColWin(self, wx.NewId(), wx.GREEN)
292
293 b = 10
294 vsbsizer1 = wx.StaticBoxSizer(wx.StaticBox(self, wx.NewId(), 'StaticboxSizer with a caption'), wx.VERTICAL)
295 vsbsizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
296 vsbsizer1.Add(wblue, 1, wx.EXPAND | wx.ALL, b)
297 vsbsizer1.Add(wgreen, 1, wx.EXPAND | wx.ALL, b)
298 self.SetSizer(vsbsizer1)
299
300
301 class MyPanel_11(wx.Panel):
302 """- Three ColWins in a StaticBoxSizer, vertically
303 - the StaticBoxSizer is in a sizer to enable a border"""
304
305 def __init__(self, parent):
306 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
307
308 wred = ColWin(self, wx.NewId(), wx.RED)
309 wblue = ColWin(self, wx.NewId(), wx.BLUE)
310 wgreen = ColWin(self, wx.NewId(), wx.GREEN)
311
312 b = 10
313 vsbsizer1 = wx.StaticBoxSizer(wx.StaticBox(self, wx.NewId(), 'StaticboxSizer with a caption'), wx.VERTICAL)
314 vsbsizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
315 vsbsizer1.Add(wblue, 1, wx.EXPAND | wx.ALL, b)
316 vsbsizer1.Add(wgreen, 1, wx.EXPAND | wx.ALL, b)
317
318 b = 20
319 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
320 hsizer1.Add(vsbsizer1, 1, wx.EXPAND | wx.ALL, b)
321
322 self.SetSizer(hsizer1)
323
324
325 class MyPanel_12(wx.Panel):
326 """- 5 ColWins, vertically
327 - ColWins 2 and 4 are in StaticBoxSizer"""
328
329 def __init__(self, parent):
330 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
331
332 wred = ColWin(self, wx.NewId(), wx.RED)
333 wblue = ColWin(self, wx.NewId(), wx.BLUE)
334 wgreen = ColWin(self, wx.NewId(), wx.GREEN)
335 wwhite = ColWin(self, wx.NewId(), wx.WHITE)
336 wyellow = ColWin(self, wx.NewId(), wx.NamedColour('yellow'))
337
338 b = 10
339 vsbsizer1 = wx.StaticBoxSizer(wx.StaticBox(self, wx.NewId(), 'blue'), wx.VERTICAL)
340 vsbsizer1.Add(wblue, 1, wx.EXPAND | wx.ALL, b)
341
342 vsbsizer2 = wx.StaticBoxSizer(wx.StaticBox(self, wx.NewId(), 'white'), wx.VERTICAL)
343 vsbsizer2.Add(wwhite, 1, wx.EXPAND | wx.ALL, b)
344
345 b = 5
346 vsizer1 = wx.BoxSizer(wx.VERTICAL)
347 vsizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
348 vsizer1.Add(vsbsizer1, 1, wx.EXPAND | wx.ALL, b)
349 vsizer1.Add(wgreen, 1, wx.EXPAND | wx.ALL, b)
350 vsizer1.Add(vsbsizer2, 1, wx.EXPAND | wx.ALL, b)
351 vsizer1.Add(wyellow, 1, wx.EXPAND | wx.ALL, b)
352
353 self.SetSizer(vsizer1)
354
355
356 class MyPanel_13(wx.Panel):
357 """- 3 StaticBoxSizers with a ColWin in each
358 - the StaticBoxSizers are arranged vertically"""
359
360 def __init__(self, parent):
361 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
362
363 wred = ColWin(self, wx.NewId(), wx.NamedColour('red'))
364 wgreen = ColWin(self, wx.NewId(), wx.NamedColour('green'))
365 wblue = ColWin(self, wx.NewId(), wx.NamedColour('blue'))
366
367 b = 10
368 sizer1 = wx.StaticBoxSizer(wx.StaticBox(self, wx.NewId(), 'Staticbox'), wx.VERTICAL)
369 sizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
370
371 sizer2 = wx.StaticBoxSizer(wx.StaticBox(self, wx.NewId(), 'Staticbox'), wx.VERTICAL)
372 sizer2.Add(wgreen, 1, wx.EXPAND | wx.ALL, b)
373
374 sizer4 = wx.StaticBoxSizer(wx.StaticBox(self, wx.NewId(), 'Staticbox'), wx.VERTICAL)
375 sizer4.Add(wblue, 1, wx.EXPAND | wx.ALL, b)
376
377
378
379 b1, b2 = 0, -1
380 sizer3 = wx.BoxSizer(wx.HORIZONTAL)
381 sizer3.Add(sizer1, 1, wx.EXPAND, b1)
382 sizer3.Add(sizer2, 1, wx.EXPAND | wx.LEFT, b2)
383 sizer3.Add(sizer4, 1, wx.EXPAND | wx.LEFT, b2)
384
385 self.SetSizer(sizer3)
386
387
388 class MyPanel_14(wx.Panel):
389 """- 3 ColWins, horizontally, 2 spacers with a fixed height"""
390
391 def __init__(self, parent):
392 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
393
394 wred = ColWin(self, wx.NewId(), wx.RED)
395 wblue = ColWin(self, wx.NewId(), wx.BLUE)
396 wgreen = ColWin(self, wx.NewId(), wx.GREEN)
397
398 b = 0
399 h = 20
400 hsizer1 = wx.BoxSizer(wx.VERTICAL)
401 hsizer1.Add(wred, 1, wx.EXPAND | wx.ALL, b)
402 hsizer1.Add((-1, h))
403 hsizer1.Add(wblue, 1, wx.EXPAND | wx.ALL, b)
404 hsizer1.Add((-1, h))
405 hsizer1.Add(wgreen, 1, wx.EXPAND | wx.ALL, b)
406 self.SetSizer(hsizer1)
407
408
409 class MyPanel_15(wx.Panel):
410 """- 4 items: a ColWin and 3 Buttons
411 - Buttons 1 and 3 are left/right aligned, Button 2 is centered
412 - use of spacers to set a gap between the Buttons.
413 - better way?"""
414
415 def __init__(self, parent):
416 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
417
418 wgreen = ColWin(self, wx.NewId(), wx.NamedColour('green'))
419 b1 = wx.Button(self, wx.NewId(), 'button1', (-1, -1), wx.DefaultSize)
420 b2 = wx.Button(self, wx.NewId(), 'button2', (-1, -1), wx.DefaultSize)
421 b3 = wx.Button(self, wx.NewId(), 'button3', (-1, -1), wx.DefaultSize)
422
423 b = 0
424 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
425 hsizer1.Add(b1, 0, wx.ALL, b)
426 hsizer1.Add((-1, -1), 1)
427 hsizer1.Add(b2, 0, wx.ALL, b)
428 hsizer1.Add((-1, -1), 1)
429 hsizer1.Add(b3, 0, wx.ALL, b)
430
431
432
433
434
435
436
437
438 b = 5
439 vsizer2 = wx.BoxSizer(wx.VERTICAL)
440 vsizer2.Add(wgreen, 1, wx.EXPAND | wx.ALL, b)
441 vsizer2.Add(hsizer1, 0, wx.EXPAND | wx.ALL, b)
442 self.SetSizer(vsizer2)
443
444
445 class MyPanel_16(wx.Panel):
446 """- 4 items: a ColWin, 3 Buttons
447 - Buttons 1 and 3 are top/bottom aligned, Button 2 is centered
448 - use of spacers to set a gap between the Buttons
449 - better way?"""
450
451 def __init__(self, parent):
452 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
453
454 wgreen = ColWin(self, wx.NewId(), wx.NamedColour('green'))
455 b1 = wx.Button(self, wx.NewId(), 'button1', (-1, -1), wx.DefaultSize)
456 b2 = wx.Button(self, wx.NewId(), 'button2', (-1, -1), wx.DefaultSize)
457 b3 = wx.Button(self, wx.NewId(), 'button3', (-1, -1), wx.DefaultSize)
458
459 b = 0
460 vsizer1 = wx.BoxSizer(wx.VERTICAL)
461 vsizer1.Add(b1, 0, wx.ALL, b)
462 vsizer1.Add((-1, -1), 1)
463 vsizer1.Add(b2, 0, wx.ALL, b)
464 vsizer1.Add((-1, -1), 1)
465 vsizer1.Add(b3, 0, wx.ALL, b)
466
467 b = 5
468 hsizer2 = wx.BoxSizer(wx.HORIZONTAL)
469 hsizer2.Add(vsizer1, 0, wx.EXPAND | wx.ALL, b)
470 hsizer2.Add(wgreen, 1, wx.EXPAND | wx.ALL, b)
471 self.SetSizer(hsizer2)
472
473
474 class MyPanel_17(wx.Panel):
475 """- An input box"""
476 def __init__(self, parent):
477 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
478 self.parent = parent
479
480 s = 'abc' + os.linesep + 'def' + os.linesep + 'ghi'
481 statxt = wx.StaticText(self, -1, s, (-1, -1), (-1, -1))
482 txt = wx.TextCtrl(self, wx.NewId(), 'input', (-1, -1), (-1, -1))
483 staline = wx.StaticLine(self, -1, (-1, -1), (-1, -1), wx.LI_HORIZONTAL)
484
485 b1 = wx.Button(self, wx.NewId(), "&OK", (-1, -1), wx.DefaultSize)
486 b2 = wx.Button(self, wx.NewId(), "&Cancel", (-1, -1), wx.DefaultSize)
487
488 b = 10
489 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
490 hsizer1.Add(b1, 0)
491 hsizer1.Add(b2, 0, wx.LEFT, b)
492
493 b = 5
494 vsizer1 = wx.BoxSizer(wx.VERTICAL)
495 vsizer1.Add(statxt, 0, wx.GROW | wx.ALL, b)
496 vsizer1.Add(txt, 0, wx.GROW | wx.ALL, b)
497 vsizer1.Add(staline, 0, wx.GROW | wx.ALL, b)
498 vsizer1.Add(hsizer1, 0, wx.ALIGN_RIGHT | wx.ALL, b)
499 vsizer1.SetMinSize((300, -1))
500 self.SetSizerAndFit(vsizer1)
501
502
503
504 self.parent.SetClientSize(vsizer1.GetSize())
505
506
507 class MyPanel_18(wx.Panel):
508 """- A message box"""
509
510 def __init__(self, parent):
511 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
512 self.parent = parent
513
514 s = 'This is a rather long message with.'
515 s += (os.linesep + 'a lot of lines...')*20
516
517 statxt = wx.StaticText(self, -1, s, (-1, -1), (-1, -1))
518 staline = wx.StaticLine(self, -1, (-1, -1), (-1, -1), wx.LI_HORIZONTAL)
519 b1 = wx.Button(self, wx.NewId(), "&OK", (-1, -1), wx.DefaultSize)
520
521 b = 5
522 vsizer1 = wx.BoxSizer(wx.VERTICAL)
523 vsizer1.Add(statxt, 1, wx.EXPAND | wx.ALL, b)
524 vsizer1.Add(staline, 0, wx.GROW | wx.ALL, b)
525 vsizer1.Add(b1, 0, wx.ALIGN_CENTER | wx.ALL, b)
526 vsizer1.SetMinSize((200, -1))
527 self.SetSizerAndFit(vsizer1)
528
529 self.parent.SetClientSize(vsizer1.GetSize())
530
531
532 class MyPanel_19(wx.Panel):
533 """- A serie of couples, StaticText-TextCtrl
534 - Buttons ok and cancel"""
535
536 def __init__(self, parent):
537 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
538 self.parent = parent
539
540 lab1 = wx.StaticText(self, -1, 'hydrogen :', (-1, -1), (-1, -1), wx.ALIGN_RIGHT)
541 lab2 = wx.StaticText(self, -1, 'tin :', (-1, -1), (-1, -1), wx.ALIGN_RIGHT)
542 lab3 = wx.StaticText(self, -1, 'mendelevium :', (-1, -1), (-1, -1), wx.ALIGN_RIGHT)
543 lab4 = wx.StaticText(self, -1, 'carbon :', (-1, -1), (-1, -1), wx.ALIGN_RIGHT)
544 txt1 = wx.TextCtrl(self, -1, '', (-1, -1), (-1, -1))
545 txt2 = wx.TextCtrl(self, -1, '', (-1, -1), (-1, -1))
546 txt3 = wx.TextCtrl(self, -1, '', (-1, -1), (-1, -1))
547 txt4 = wx.TextCtrl(self, -1, '', (-1, -1), (-1, -1))
548 b1 = wx.Button(self, wx.NewId(), '&OK', (-1, -1), wx.DefaultSize)
549 b2 = wx.Button(self, wx.NewId(), '&Cancel', (-1, -1), wx.DefaultSize)
550 staline = wx.StaticLine(self, wx.NewId(), (-1, -1), (-1, 2), wx.LI_HORIZONTAL)
551
552 b = 5
553 w = 100
554 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
555 hsizer1.Add(lab1, 0, wx.RIGHT, b)
556 hsizer1.Add(txt1, 1, wx.GROW, b)
557 hsizer1.SetItemMinSize(lab1, (w, -1))
558
559 hsizer2 = wx.BoxSizer(wx.HORIZONTAL)
560 hsizer2.Add(lab2, 0, wx.RIGHT, b)
561 hsizer2.Add(txt2, 1, wx.GROW, b)
562 hsizer2.SetItemMinSize(lab2, (w, -1))
563
564 hsizer3 = wx.BoxSizer(wx.HORIZONTAL)
565 hsizer3.Add(lab3, 0, wx.RIGHT, b)
566 hsizer3.Add(txt3, 1, wx.GROW, b)
567 hsizer3.SetItemMinSize(lab3, (w, -1))
568
569 hsizer4 = wx.BoxSizer(wx.HORIZONTAL)
570 hsizer4.Add(lab4, 0, wx.RIGHT, b)
571 hsizer4.Add(txt4, 1, wx.GROW, b)
572 hsizer4.SetItemMinSize(lab4, (w, -1))
573
574 hsizer5 = wx.BoxSizer(wx.HORIZONTAL)
575 hsizer5.Add(b1, 0)
576 hsizer5.Add(b2, 0, wx.LEFT, 10)
577
578 b = 5
579 vsizer1 = wx.BoxSizer(wx.VERTICAL)
580 vsizer1.Add(hsizer1, 0, wx.EXPAND | wx.ALL, b)
581 vsizer1.Add(hsizer2, 0, wx.EXPAND | wx.ALL, b)
582 vsizer1.Add(hsizer3, 0, wx.EXPAND | wx.ALL, b)
583 vsizer1.Add(hsizer4, 0, wx.EXPAND | wx.ALL, b)
584 vsizer1.Add(staline, 0, wx.GROW | wx.ALL, b)
585 vsizer1.Add(hsizer5, 0, wx.ALIGN_RIGHT | wx.ALL, b)
586
587 self.SetSizerAndFit(vsizer1)
588 self.parent.SetClientSize(vsizer1.GetSize())
589
590
591 class MyPanel_20(wx.Panel):
592 """- A FlexGridSizer
593 - 4 ColWins as cells, all sizeable"""
594
595 def __init__(self, parent):
596 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
597
598 wred = ColWin(self, -1, wx.RED)
599 wblue = ColWin(self, -1, wx.BLUE)
600 wwhite = ColWin(self, -1, wx.WHITE)
601 wcyan = ColWin(self, -1, wx.CYAN)
602
603 hgap, vgap = 0, 0
604 nrows, ncols = 2, 2
605 fgs = wx.FlexGridSizer(nrows, ncols, hgap, vgap)
606
607 b = 5
608 fgs.AddMany([(wred, 1, wx.EXPAND | wx.ALL, b),
609 (wblue, 1, wx.EXPAND | wx.ALL, b),
610 (wwhite, 1, wx.EXPAND | wx.ALL, b),
611 (wcyan, 1, wx.EXPAND | wx.ALL, b),
612 ])
613
614
615
616
617
618
619
620
621 fgs.AddGrowableRow(0)
622 fgs.AddGrowableRow(1)
623 fgs.AddGrowableCol(0)
624 fgs.AddGrowableCol(1)
625
626 self.SetSizer(fgs)
627
628
629 class MyPanel_21(wx.Panel):
630 """- A FlexgridSizer with 4 cells
631 - cell (0, 0) is a column of 3 Buttons
632 - cell (1, 1) is a row of 3 Buttons
633 - cell (1, 0) is empty
634 - cell (0, 1) is a ColWin"""
635
636 def __init__(self, parent):
637 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
638
639 wwhite = ColWin(self, -1, wx.WHITE)
640 b1 = wx.Button(self, -1, 'button1', (-1, -1), wx.DefaultSize)
641 b2 = wx.Button(self, -1, 'button2', (-1, -1), wx.DefaultSize)
642 b3 = wx.Button(self, -1, 'button3', (-1, -1), wx.DefaultSize)
643 b4 = wx.Button(self, -1, 'button4', (-1, -1), wx.DefaultSize)
644 b5 = wx.Button(self, -1, 'button5', (-1, -1), wx.DefaultSize)
645 b6 = wx.Button(self, -1, 'button6', (-1, -1), wx.DefaultSize)
646
647 b = 0
648 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
649 hsizer1.Add(b1, 0, wx.ALL, b)
650 hsizer1.Add((-1, -1), 1)
651 hsizer1.Add(b2, 0, wx.ALL, b)
652 hsizer1.Add((-1, -1), 1)
653 hsizer1.Add(b3, 0, wx.ALL, b)
654
655 b = 0
656 vsizer1 = wx.BoxSizer(wx.VERTICAL)
657 vsizer1.Add(b4, 0, wx.ALL, b)
658 vsizer1.Add((-1, -1), 1)
659 vsizer1.Add(b5, 0, wx.ALL, b)
660 vsizer1.Add((-1, -1), 1)
661 vsizer1.Add(b6, 0, wx.ALL, b)
662
663 hgap, vgap = 0, 0
664 nrows, ncols = 2, 2
665 fgs = wx.FlexGridSizer(nrows, ncols, hgap, vgap)
666
667 b = 5
668 fgs.AddMany([(vsizer1, 1, wx.EXPAND | wx.ALL, b),
669 (wwhite, 1, wx.EXPAND | wx.ALL, b),
670 ((-1, -1), 1, wx.EXPAND | wx.ALL, b),
671 (hsizer1, 1, wx.EXPAND | wx.ALL, b),
672 ])
673
674
675 fgs.AddGrowableRow(0)
676 fgs.AddGrowableCol(1)
677
678 self.SetSizer(fgs)
679
680
681 class MyPanel_22(wx.Panel):
682 """- A FlexGridSizer of 9 cells (3x3) with 5 ColWins in cells
683 and 4 empty cells"""
684
685 def __init__(self, parent):
686 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
687
688 wwhite = ColWin(self, -1, wx.WHITE)
689 wblue = ColWin(self, -1, wx.BLUE)
690 wgreen = ColWin(self, -1, wx.GREEN)
691 wcyan = ColWin(self, -1, wx.CYAN)
692 wred = ColWin(self, -1, wx.RED)
693
694 hgap, vgap = 0, 0
695 nrows, ncols = 3, 3
696 fgs = wx.FlexGridSizer(nrows, ncols, hgap, vgap)
697
698 b = 5
699 fgs.AddMany([(wwhite, 1, wx.EXPAND | wx.ALL, b),
700 ((-1, -1), 1, wx.EXPAND | wx.ALL, b),
701 (wblue, 1, wx.EXPAND | wx.ALL, b),
702
703 ((-1, -1), 1, wx.EXPAND | wx.ALL, b),
704 (wgreen, 1, wx.EXPAND | wx.ALL, b),
705 ((-1, -1), 1, wx.EXPAND | wx.ALL, b),
706
707 (wred, 1, wx.EXPAND | wx.ALL, b),
708 ((-1, -1), 1, wx.EXPAND | wx.ALL, b),
709 (wcyan, 1, wx.EXPAND | wx.ALL, b),
710 ])
711
712 fgs.AddGrowableRow(0)
713 fgs.AddGrowableRow(1)
714 fgs.AddGrowableRow(2)
715
716 fgs.AddGrowableCol(0)
717 fgs.AddGrowableCol(1)
718 fgs.AddGrowableCol(2)
719
720 self.SetSizer(fgs)
721
722
723 class MyPanel_23(wx.Panel):
724 """- A FlexGridSizer of 9 cells (3x3) with 4 ColWins in cells and 5 empty cells
725 - rows 1 and 3 have a fixed size"""
726
727 def __init__(self, parent):
728 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
729
730 h = 40
731 wwhite = wx.Window(self, -1, (-1, -1), (-1, h), wx.SIMPLE_BORDER)
732 wwhite.SetBackgroundColour(wx.WHITE)
733 wblue = ColWin(self, -1, wx.BLUE)
734 wgreen = ColWin(self, -1, wx.GREEN)
735 wred = wx.Window(self, -1, (-1, -1), (-1, h), wx.SIMPLE_BORDER)
736 wred.SetBackgroundColour(wx.RED)
737
738 hgap, vgap = 0, 0
739 nrows, ncols = 3, 3
740 fgs = wx.FlexGridSizer(nrows, ncols, hgap, vgap)
741
742 b = 5
743 fgs.AddMany([((-1, -1), 1, wx.EXPAND | wx.ALL, b),
744 (wwhite, 1, wx.EXPAND | wx.ALL, b),
745 ((-1, -1), 1, wx.EXPAND | wx.ALL, b),
746
747 (wblue, 1, wx.EXPAND | wx.ALL, b),
748 ((-1, -1), 1, wx.EXPAND | wx.ALL, b),
749 (wgreen, 1, wx.EXPAND | wx.ALL, b),
750
751 ((-1, -1), 1, wx.EXPAND | wx.ALL, b),
752 (wred, 1, wx.EXPAND | wx.ALL, b),
753 ((-1, -1), 1, wx.EXPAND | wx.ALL, b),
754 ])
755
756 fgs.AddGrowableRow(1)
757
758 fgs.AddGrowableCol(0)
759 fgs.AddGrowableCol(1)
760 fgs.AddGrowableCol(2)
761
762 self.SetSizer(fgs)
763
764
765 class MyPanel_24(wx.Panel):
766 """- This example is coming from one of my applications
767 - in the real app, the white window is a drawing area and
768 the five lower windows are StaticTexts with a defined
769 font size (this is why I force a fixed height)"""
770
771 def __init__(self, parent):
772 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
773 self.parent = parent
774
775
776 menu1 = wx.Menu()
777 menu1.Append(101, '&aaa')
778 menuBar = wx.MenuBar()
779 menuBar.Append(menu1, '&File')
780 self.parent.SetMenuBar(menuBar)
781
782 wwhite = ColWin(self, -1, wx.WHITE)
783 wblue = ColWin(self, -1, wx.BLUE)
784 wgreen = ColWin(self, -1, wx.GREEN)
785 wcyan = ColWin(self, -1, wx.CYAN)
786 wred = ColWin(self, -1, wx.RED)
787 wcoral = ColWin(self, -1, wx.NamedColour('coral'))
788 staline = wx.StaticLine(self, -1, (-1, -1), (-1, 2), wx.LI_HORIZONTAL)
789
790 vsizer1 = wx.BoxSizer(wx.VERTICAL)
791 b = 5
792 vsizer1.Add(wblue, 1, wx.EXPAND | wx.BOTTOM, b)
793 vsizer1.Add(wgreen, 1, wx.EXPAND)
794
795 hsizer2 = wx.BoxSizer(wx.HORIZONTAL)
796 b = 5
797 minhe = 100
798 hsizer2.Add(wcoral, 2, wx.EXPAND | wx.RIGHT, b)
799 hsizer2.Add(wcyan, 3, wx.EXPAND | wx.RIGHT, b)
800 hsizer2.Add(wred, 3, wx.EXPAND | wx.RIGHT, b)
801 hsizer2.Add(vsizer1, 2, wx.EXPAND, border=b)
802 hsizer2.SetItemMinSize(wcoral, (-1, minhe))
803 hsizer2.SetItemMinSize(wcyan, (-1, minhe))
804 hsizer2.SetItemMinSize(wred, (-1, minhe))
805 hsizer2.SetItemMinSize(vsizer1, (-1, minhe))
806
807 vsizer3 = wx.BoxSizer(wx.VERTICAL)
808 b = 5
809 vsizer3.Add(staline, 0, wx.GROW | wx.ALL, 0)
810 vsizer3.Add(wwhite, 1, wx.EXPAND | wx.TOP | wx.LEFT | wx.RIGHT, b)
811 vsizer3.Add(hsizer2, 0, wx.EXPAND | wx.ALL, b)
812
813 self.SetSizerAndFit(vsizer3)
814
815
816 class MyPanel_25(wx.Panel):
817 """- This shows the relaton between the font size and the size of the
818 widgets when sizers are used"""
819
820 def __init__(self, parent):
821 wx.Panel.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize)
822 self.parent = parent
823
824 fs = 20
825 self.SetFont(wx.Font(fs, wx.DEFAULT, wx.NORMAL, wx.NORMAL, False))
826
827
828 statxt1 = wx.StaticText(self, -1, 'one, two, three', (-1, -1), (-1, -1))
829 statxt1.SetBackgroundColour(wx.WHITE)
830 statxt2 = wx.StaticText(self, -1, 'eins, zwei, drei', (-1, -1), (-1, -1))
831 statxt3 = wx.StaticText(self, -1, 'un, deux, trois', (-1, -1), (-1, -1))
832 b1 = wx.Button(self, wx.NewId(), 'button1', (-1, -1), (-1, -1))
833 b2 = wx.Button(self, wx.NewId(), 'button2', (-1, -1), (-1, -1))
834
835 b = 5
836 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
837 hsizer1.Add(b1, 1, wx.EXPAND | wx.ALL, b)
838 hsizer1.Add(b2, 1, wx.EXPAND | wx.ALL, b)
839
840 vsizer1 = wx.BoxSizer(wx.VERTICAL)
841 vsizer1.Add(statxt1, 0, wx.ALL, b)
842 vsizer1.Add(statxt2, 0, wx.ALL, b)
843 vsizer1.Add(statxt3, 0, wx.ALL, b)
844 vsizer1.Add(hsizer1, 0, wx.ALL, b)
845
846 self.SetSizerAndFit(vsizer1)
847 self.parent.SetClientSize(vsizer1.GetSize())
848
849
850 class TestComboBox(wx.Panel):
851 def __init__(self, parent, id):
852 wx.Panel.__init__(self, parent, id)
853
854 sampleList = []
855 for i in range(0, 26):
856 sampleList.append('MyPanel_' + `i`)
857
858 st = wx.StaticText(self, -1, "Select the example you want to see."
859 "Then click the View button.", (-1, -1))
860
861 doctxt = wx.StaticText(self, -1, "")
862 doctxt.SetLabel(MyPanel_0.__doc__)
863 self.doctxt = doctxt
864
865
866 cb = wx.ComboBox(
867 self, -1, "MyPanel_0", (-1, -1),
868 (-1, -1), sampleList, wx.CB_DROPDOWN
869 )
870 self.cb = cb
871
872 stline = wx.StaticLine(self, -1, (-1, -1), (-1, 2), wx.LI_HORIZONTAL)
873
874 btnView = wx.Button(self, -1, "&View")
875 self.Bind(wx.EVT_BUTTON, self.OnClickView, btnView)
876
877 btnExit = wx.Button(self, -1, "E&xit")
878 self.Bind(wx.EVT_BUTTON, self.OnClickExit, btnExit)
879
880 b = 5
881 vsizer1 = wx.BoxSizer(wx.VERTICAL)
882 vsizer1.Add(st, 0, wx.EXPAND | wx.ALL, b)
883 vsizer1.Add(cb, 0, wx.EXPAND | wx.ALL, 0)
884 vsizer1.Add(doctxt, 0, wx.EXPAND | wx.ALL, b)
885
886 hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
887 hsizer1.Add(btnView, 0)
888 hsizer1.Add(btnExit, 0, wx.LEFT, b)
889
890 vsizer2 = wx.BoxSizer(wx.VERTICAL)
891 vsizer2.Add(vsizer1, 5, wx.EXPAND | wx.ALL, 0)
892 vsizer2.Add(stline, 0, wx.GROW | wx.ALL, b)
893 vsizer2.Add(hsizer1, 1, wx.ALIGN_RIGHT | wx.ALL, b)
894 self.SetSizer(vsizer2)
895
896 self.Bind(wx.EVT_COMBOBOX, self.EvtComboBox, cb)
897
898
899 def EvtComboBox(self, evt):
900 self.doctxt.SetLabel(eval('%s.__doc__' % self.cb.GetValue()))
901
902 def OnClickView(self, evt):
903 win = wx.Frame(self, -1, self.cb.GetValue(), size=(350, 200),
904 style = wx.DEFAULT_FRAME_STYLE)
905 eval('%s(win)' % self.cb.GetValue())
906
907 win.CenterOnScreen()
908 win.Show(True)
909
910 def OnClickExit(self, evt):
911 sys.exit()
912
913
914
915 class MyFrame(wx.Frame):
916
917 def __init__(self, parent, id):
918 s = __file__
919 wx.Frame.__init__(self, parent, id, s, (0, 0), (500, 400))
920
921 self.panel = eval('MyPanel_%d(self)' % panel)
922 self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
923
924 def OnCloseWindow(self, event):
925 self.Destroy()
926
927
928 class MyApp(wx.App):
929
930 def OnInit(self):
931 frame = wx.Frame(None, -1, __file__, (0, 0), (400, 300))
932 frame.panel = TestComboBox(frame, -1)
933 frame.Show(True)
934 self.SetTopWindow(frame)
935 return True
936
937
938 def main():
939 app = MyApp(False)
940 app.MainLoop()
941
942
943 if __name__ == "__main__" :
944 main()