1 #---------------------------------------------------------------------- 
   3 #---------------------------------------------------------------------- 
   5 from wxPython
.wx             
import * 
   6 from wxPython
.lib
.grids      
import wxGridSizer
, wxFlexGridSizer
 
   8 #---------------------------------------------------------------------- 
  10 def makeSimpleBox1(win
): 
  11     box 
= wxBoxSizer(wxHORIZONTAL
) 
  12     box
.Add(wxButton(win
, 1010, "one"), 0, wxEXPAND
) 
  13     box
.Add(wxButton(win
, 1010, "two"), 0, wxEXPAND
) 
  14     box
.Add(wxButton(win
, 1010, "three"), 0, wxEXPAND
) 
  15     box
.Add(wxButton(win
, 1010, "four"), 0, wxEXPAND
) 
  19 #---------------------------------------------------------------------- 
  21 def makeSimpleBox2(win
): 
  22     box 
= wxBoxSizer(wxVERTICAL
) 
  23     box
.Add(wxButton(win
, 1010, "one"), 0, wxEXPAND
) 
  24     box
.Add(wxButton(win
, 1010, "two"), 0, wxEXPAND
) 
  25     box
.Add(wxButton(win
, 1010, "three"), 0, wxEXPAND
) 
  26     box
.Add(wxButton(win
, 1010, "four"), 0, wxEXPAND
) 
  30 #---------------------------------------------------------------------- 
  32 def makeSimpleBox3(win
): 
  33     box 
= wxBoxSizer(wxHORIZONTAL
) 
  34     box
.Add(wxButton(win
, 1010, "one"), 0, wxEXPAND
) 
  35     box
.Add(wxButton(win
, 1010, "two"), 0, wxEXPAND
) 
  36     box
.Add(wxButton(win
, 1010, "three"), 0, wxEXPAND
) 
  37     box
.Add(wxButton(win
, 1010, "four"), 0, wxEXPAND
) 
  38     box
.Add(wxButton(win
, 1010, "five"), 1, wxEXPAND
) 
  42 #---------------------------------------------------------------------- 
  44 def makeSimpleBox4(win
): 
  45     box 
= wxBoxSizer(wxHORIZONTAL
) 
  46     box
.Add(wxButton(win
, 1010, "one"), 0, wxEXPAND
) 
  47     box
.Add(wxButton(win
, 1010, "two"), 0, wxEXPAND
) 
  48     box
.Add(wxButton(win
, 1010, "three"), 1, wxEXPAND
) 
  49     box
.Add(wxButton(win
, 1010, "four"), 1, wxEXPAND
) 
  50     box
.Add(wxButton(win
, 1010, "five"), 1, wxEXPAND
) 
  54 #---------------------------------------------------------------------- 
  56 def makeSimpleBox5(win
): 
  57     box 
= wxBoxSizer(wxHORIZONTAL
) 
  58     box
.Add(wxButton(win
, 1010, "one"), 0, wxEXPAND
) 
  59     box
.Add(wxButton(win
, 1010, "two"), 0, wxEXPAND
) 
  60     box
.Add(wxButton(win
, 1010, "three"), 3, wxEXPAND
) 
  61     box
.Add(wxButton(win
, 1010, "four"), 1, wxEXPAND
) 
  62     box
.Add(wxButton(win
, 1010, "five"), 1, wxEXPAND
) 
  66 #---------------------------------------------------------------------- 
  68 def makeSimpleBox6(win
): 
  69     box 
= wxBoxSizer(wxHORIZONTAL
) 
  70     box
.Add(wxButton(win
, 1010, "one"), 1, wxALIGN_TOP
) 
  71     box
.Add(wxButton(win
, 1010, "two"), 1, wxEXPAND
) 
  72     box
.Add(wxButton(win
, 1010, "three"), 1, wxALIGN_CENTER
) 
  73     box
.Add(wxButton(win
, 1010, "four"), 1, wxEXPAND
) 
  74     box
.Add(wxButton(win
, 1010, "five"), 1, wxALIGN_BOTTOM
) 
  78 #---------------------------------------------------------------------- 
  80 def makeSimpleBox7(win
): 
  81     box 
= wxBoxSizer(wxHORIZONTAL
) 
  82     box
.Add(wxButton(win
, 1010, "one"), 0, wxEXPAND
) 
  83     box
.Add(wxButton(win
, 1010, "two"), 0, wxEXPAND
) 
  84     box
.Add(wxButton(win
, 1010, "three"), 0, wxEXPAND
) 
  85     box
.Add(60, 20, 0, wxEXPAND
) 
  86     box
.Add(wxButton(win
, 1010, "five"), 1, wxEXPAND
) 
  90 #---------------------------------------------------------------------- 
  92 def makeSimpleBox8(win
): 
  93     box 
= wxBoxSizer(wxVERTICAL
) 
  94     box
.Add(wxButton(win
, 1010, "one"), 0, wxEXPAND
) 
  96     box
.Add(wxButton(win
, 1010, "two"), 0, wxALIGN_CENTER
) 
  98     box
.Add(wxButton(win
, 1010, "three"), 0, wxEXPAND
) 
  99     box
.Add(wxButton(win
, 1010, "four"), 0, wxEXPAND
) 
 100 #    box.Add(wxButton(win, 1010, "five"), 1, wxEXPAND) 
 104 #---------------------------------------------------------------------- 
 105 #---------------------------------------------------------------------- 
 107 def makeSimpleBorder1(win
): 
 108     bdr 
= wxBoxSizer(wxHORIZONTAL
) 
 109     btn 
= wxButton(win
, 1010, "border") 
 110     btn
.SetSize(wxSize(80, 80)) 
 111     bdr
.Add(btn
, 1, wxEXPAND|wxALL
, 15) 
 115 #---------------------------------------------------------------------- 
 117 def makeSimpleBorder2(win
): 
 118     bdr 
= wxBoxSizer(wxHORIZONTAL
) 
 119     btn 
= wxButton(win
, 1010, "border") 
 120     btn
.SetSize(wxSize(80, 80)) 
 121     bdr
.Add(btn
, 1, wxEXPAND | wxEAST | wxWEST
, 15) 
 125 #---------------------------------------------------------------------- 
 127 def makeSimpleBorder3(win
): 
 128     bdr 
= wxBoxSizer(wxHORIZONTAL
) 
 129     btn 
= wxButton(win
, 1010, "border") 
 130     btn
.SetSize(wxSize(80, 80)) 
 131     bdr
.Add(btn
, 1, wxEXPAND | wxNORTH | wxWEST
, 15) 
 135 #---------------------------------------------------------------------- 
 136 #---------------------------------------------------------------------- 
 138 def makeBoxInBox(win
): 
 139     box 
= wxBoxSizer(wxVERTICAL
) 
 141     box
.Add(wxButton(win
, 1010, "one"), 0, wxEXPAND
) 
 143     box2 
= wxBoxSizer(wxHORIZONTAL
) 
 144     box2
.AddMany([ (wxButton(win
, 1010, "two"), 0, wxEXPAND
), 
 145                    (wxButton(win
, 1010, "three"), 0, wxEXPAND
), 
 146                    (wxButton(win
, 1010, "four"), 0, wxEXPAND
), 
 147                    (wxButton(win
, 1010, "five"), 0, wxEXPAND
), 
 150     box3 
= wxBoxSizer(wxVERTICAL
) 
 151     box3
.AddMany([ (wxButton(win
, 1010, "six"),   0, wxEXPAND
), 
 152                    (wxButton(win
, 1010, "seven"), 2, wxEXPAND
), 
 153                    (wxButton(win
, 1010, "eight"), 1, wxEXPAND
), 
 154                    (wxButton(win
, 1010, "nine"),  1, wxEXPAND
), 
 157     box2
.Add(box3
, 1, wxEXPAND
) 
 158     box
.Add(box2
, 1, wxEXPAND
) 
 160     box
.Add(wxButton(win
, 1010, "ten"), 0, wxEXPAND
) 
 164 #---------------------------------------------------------------------- 
 166 def makeBoxInBorder(win
): 
 167     bdr 
= wxBoxSizer(wxHORIZONTAL
) 
 168     box 
= makeSimpleBox3(win
) 
 169     bdr
.Add(box
, 1, wxEXPAND | wxALL
, 15) 
 173 #---------------------------------------------------------------------- 
 175 def makeBorderInBox(win
): 
 176     insideBox 
= wxBoxSizer(wxHORIZONTAL
) 
 178     box2 
= wxBoxSizer(wxHORIZONTAL
) 
 179     box2
.AddMany([ (wxButton(win
, 1010, "one"), 0, wxEXPAND
), 
 180                    (wxButton(win
, 1010, "two"), 0, wxEXPAND
), 
 181                    (wxButton(win
, 1010, "three"), 0, wxEXPAND
), 
 182                    (wxButton(win
, 1010, "four"), 0, wxEXPAND
), 
 183                    (wxButton(win
, 1010, "five"), 0, wxEXPAND
), 
 186     insideBox
.Add(box2
, 0, wxEXPAND
) 
 188     bdr 
= wxBoxSizer(wxHORIZONTAL
) 
 189     bdr
.Add(wxButton(win
, 1010, "border"), 1, wxEXPAND | wxALL
) 
 190     insideBox
.Add(bdr
, 1, wxEXPAND | wxALL
, 20) 
 192     box3 
= wxBoxSizer(wxVERTICAL
) 
 193     box3
.AddMany([ (wxButton(win
, 1010, "six"),   0, wxEXPAND
), 
 194                    (wxButton(win
, 1010, "seven"), 2, wxEXPAND
), 
 195                    (wxButton(win
, 1010, "eight"), 1, wxEXPAND
), 
 196                    (wxButton(win
, 1010, "nine"),  1, wxEXPAND
), 
 198     insideBox
.Add(box3
, 1, wxEXPAND
) 
 200     outsideBox 
= wxBoxSizer(wxVERTICAL
) 
 201     outsideBox
.Add(wxButton(win
, 1010, "top"), 0, wxEXPAND
) 
 202     outsideBox
.Add(insideBox
, 1, wxEXPAND
) 
 203     outsideBox
.Add(wxButton(win
, 1010, "bottom"), 0, wxEXPAND
) 
 208 #---------------------------------------------------------------------- 
 211     gs 
= wxGridSizer(3, 3, 2, 2)  # rows, cols, hgap, vgap 
 213     gs
.AddMany([ (wxButton(win
, 1010, 'one'),   0, wxEXPAND
), 
 214                  (wxButton(win
, 1010, 'two'),   0, wxEXPAND
), 
 215                  (wxButton(win
, 1010, 'three'), 0, wxEXPAND
), 
 216                  (wxButton(win
, 1010, 'four'),  0, wxEXPAND
), 
 217                  (wxButton(win
, 1010, 'five'),  0, wxEXPAND
), 
 219                  (wxButton(win
, 1010, 'six'),   0, wxEXPAND
), 
 220                  (wxButton(win
, 1010, 'seven'), 0, wxEXPAND
), 
 221                  (wxButton(win
, 1010, 'eight'), 0, wxEXPAND
), 
 222                  (wxButton(win
, 1010, 'nine'),  0, wxEXPAND
), 
 227 #---------------------------------------------------------------------- 
 230     gs 
= wxGridSizer(3, 3)  # rows, cols, hgap, vgap 
 232     box 
= wxBoxSizer(wxVERTICAL
) 
 233     box
.Add(wxButton(win
, 1010, 'A'), 0, wxEXPAND
) 
 234     box
.Add(wxButton(win
, 1010, 'B'), 1, wxEXPAND
) 
 236     gs2 
= wxGridSizer(2,2, 4, 4) 
 237     gs2
.AddMany([ (wxButton(win
, 1010, 'C'), 0, wxEXPAND
), 
 238                   (wxButton(win
, 1010, 'E'), 0, wxEXPAND
), 
 239                   (wxButton(win
, 1010, 'F'), 0, wxEXPAND
), 
 240                   (wxButton(win
, 1010, 'G'), 0, wxEXPAND
)]) 
 242     gs
.AddMany([ (wxButton(win
, 1010, 'one'),   0, wxALIGN_RIGHT | wxALIGN_BOTTOM
), 
 243                  (wxButton(win
, 1010, 'two'),   0, wxEXPAND
), 
 244                  (wxButton(win
, 1010, 'three'), 0, wxALIGN_LEFT | wxALIGN_BOTTOM
), 
 245                  (wxButton(win
, 1010, 'four'),  0, wxEXPAND
), 
 246                  (wxButton(win
, 1010, 'five'),  0, wxALIGN_CENTER
), 
 247                  (wxButton(win
, 1010, 'six'),   0, wxEXPAND
), 
 248                  (box
,                          0, wxEXPAND | wxALL
, 10), 
 249                  (wxButton(win
, 1010, 'eight'), 0, wxEXPAND
), 
 250                  (gs2
,                          0, wxEXPAND | wxALL
, 4), 
 255 #---------------------------------------------------------------------- 
 258     gs 
= wxFlexGridSizer(3, 3, 2, 2)  # rows, cols, hgap, vgap 
 260     gs
.AddMany([ (wxButton(win
, 1010, 'one'),   0, wxEXPAND
), 
 261                  (wxButton(win
, 1010, 'two'),   0, wxEXPAND
), 
 262                  (wxButton(win
, 1010, 'three'), 0, wxEXPAND
), 
 263                  (wxButton(win
, 1010, 'four'),  0, wxEXPAND
), 
 264                  #(wxButton(win, 1010, 'five'),  0, wxEXPAND), 
 266                  (wxButton(win
, 1010, 'six'),   0, wxEXPAND
), 
 267                  (wxButton(win
, 1010, 'seven'), 0, wxEXPAND
), 
 268                  (wxButton(win
, 1010, 'eight'), 0, wxEXPAND
), 
 269                  (wxButton(win
, 1010, 'nine'),  0, wxEXPAND
), 
 277 #---------------------------------------------------------------------- 
 280     bpos 
= wxDefaultPosition
 
 281     bsize 
= wxSize(100, 50) 
 282     gs 
= wxGridSizer(3, 3, 2, 2)  # rows, cols, hgap, vgap 
 284     gs
.AddMany([ (wxButton(win
, 1010, 'one', bpos
, bsize
), 
 285                   0, wxALIGN_TOP | wxALIGN_LEFT 
), 
 286                  (wxButton(win
, 1010, 'two', bpos
, bsize
), 
 287                   0, wxALIGN_TOP | wxALIGN_CENTER_HORIZONTAL 
), 
 288                  (wxButton(win
, 1010, 'three', bpos
, bsize
), 
 289                   0, wxALIGN_TOP | wxALIGN_RIGHT 
), 
 290                  (wxButton(win
, 1010, 'four', bpos
, bsize
), 
 291                   0, wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT 
), 
 292                  (wxButton(win
, 1010, 'five', bpos
, bsize
), 
 294                  (wxButton(win
, 1010, 'six', bpos
, bsize
), 
 295                   0, wxALIGN_CENTER_VERTICAL | wxALIGN_RIGHT 
), 
 296                  (wxButton(win
, 1010, 'seven', bpos
, bsize
), 
 297                   0, wxALIGN_BOTTOM | wxALIGN_LEFT 
), 
 298                  (wxButton(win
, 1010, 'eight', bpos
, bsize
), 
 299                   0, wxALIGN_BOTTOM | wxALIGN_CENTER_HORIZONTAL 
), 
 300                  (wxButton(win
, 1010, 'nine', bpos
, bsize
), 
 301                   0, wxALIGN_BOTTOM | wxALIGN_RIGHT 
), 
 306 #---------------------------------------------------------------------- 
 309     bpos 
= wxDefaultPosition
 
 310     bsize 
= wxSize(100, 50) 
 311     gs 
= wxGridSizer(3, 3, 2, 2)  # rows, cols, hgap, vgap 
 313     gs
.AddMany([ (wxButton(win
, 1010, 'one', bpos
, bsize
), 
 314                   0, wxSHAPED | wxALIGN_TOP | wxALIGN_LEFT 
), 
 315                  (wxButton(win
, 1010, 'two', bpos
, bsize
), 
 316                   0, wxSHAPED | wxALIGN_TOP | wxALIGN_CENTER_HORIZONTAL 
), 
 317                  (wxButton(win
, 1010, 'three', bpos
, bsize
), 
 318                   0, wxSHAPED | wxALIGN_TOP | wxALIGN_RIGHT 
), 
 319                  (wxButton(win
, 1010, 'four', bpos
, bsize
), 
 320                   0, wxSHAPED | wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT 
), 
 321                  (wxButton(win
, 1010, 'five', bpos
, bsize
), 
 322                   0, wxSHAPED | wxALIGN_CENTER 
), 
 323                  (wxButton(win
, 1010, 'six', bpos
, bsize
), 
 324                   0, wxSHAPED | wxALIGN_CENTER_VERTICAL | wxALIGN_RIGHT 
), 
 325                  (wxButton(win
, 1010, 'seven', bpos
, bsize
), 
 326                   0, wxSHAPED |  wxALIGN_BOTTOM | wxALIGN_LEFT 
), 
 327                  (wxButton(win
, 1010, 'eight', bpos
, bsize
), 
 328                   0, wxSHAPED | wxALIGN_BOTTOM | wxALIGN_CENTER_HORIZONTAL 
), 
 329                  (wxButton(win
, 1010, 'nine', bpos
, bsize
), 
 330                   0, wxSHAPED | wxALIGN_BOTTOM | wxALIGN_RIGHT 
), 
 335 #---------------------------------------------------------------------- 
 337 def makeSimpleBoxShaped(win
): 
 338     box 
= wxBoxSizer(wxHORIZONTAL
) 
 339     box
.Add(wxButton(win
, 1010, "one"), 0, wxEXPAND
) 
 340     box
.Add(wxButton(win
, 1010, "two"), 0, wxEXPAND
) 
 341     box
.Add(wxButton(win
, 1010, "three"), 0, wxEXPAND
) 
 342     box
.Add(wxButton(win
, 1010, "four"), 0, wxEXPAND
) 
 343     box
.Add(wxButton(win
, 1010, "five"), 1, wxSHAPED
) 
 347 #---------------------------------------------------------------------- 
 350     ("Simple horizontal boxes", makeSimpleBox1
, 
 351      "This is a HORIZONTAL box sizer with four non-stretchable buttons held " 
 352      "within it.  Notice that the buttons are added and aligned in the horizontal " 
 353      "dimension.  Also notice that they are fixed size in the horizontal dimension, " 
 354      "but will stretch vertically." 
 357     ("Simple vertical boxes", makeSimpleBox2
, 
 358      "Exactly the same as the previous sample but using a VERTICAL box sizer " 
 359      "instead of a HORIZONTAL one." 
 362     ("Add a stretchable", makeSimpleBox3
, 
 363      "We've added one more button with the strechable flag turned on.  Notice " 
 364      "how it grows to fill the extra space in the otherwise fixed dimension." 
 367     ("More than one stretchable", makeSimpleBox4
, 
 368      "Here there are several items that are stretchable, they all divide up the " 
 369      "extra space evenly." 
 372     ("Weighting factor", makeSimpleBox5
, 
 373      "This one shows more than one strechable, but one of them has a weighting " 
 374      "factor so it gets more of the free space." 
 377     ("Edge Affinity", makeSimpleBox6
, 
 378      "For items that don't completly fill their allotted space, and don't " 
 379      "stretch, you can specify which side (or the center) they should stay " 
 383     ("Spacer", makeSimpleBox7
, 
 384      "You can add empty space to be managed by a Sizer just as if it were a " 
 385      "window or another Sizer." 
 388     ("Centering in available space", makeSimpleBox8
, 
 389      "This one shows an item that does not expand to fill it's space, but rather" 
 390      "stays centered within it." 
 393 #    ("Percent Sizer", makeSimpleBox6, 
 394 #     "You can use the wxBoxSizer like a Percent Sizer.  Just make sure that all " 
 395 #     "the weighting factors add up to 100!" 
 400     ("Simple border sizer", makeSimpleBorder1
, 
 401      "The wxBoxSizer can leave empty space around its contents.  This one " 
 402      "gives a border all the way around." 
 405     ("East and West border", makeSimpleBorder2
, 
 406      "You can pick and choose which sides have borders." 
 409     ("North and West border", makeSimpleBorder3
, 
 410      "You can pick and choose which sides have borders." 
 415     ("Boxes inside of boxes", makeBoxInBox
, 
 416      "This one shows nesting of boxes within boxes within boxes, using both " 
 417      "orientations.  Notice also that button seven has a greater weighting " 
 418      "factor than its siblings." 
 421     ("Boxes inside a Border", makeBoxInBorder
, 
 422      "Sizers of different types can be nested withing each other as well. " 
 423      "Here is a box sizer with several buttons embedded within a border sizer." 
 426     ("Border in a Box", makeBorderInBox
, 
 427      "Another nesting example.  This one has Boxes and a Border inside another Box." 
 432     ("Simple Grid", makeGrid1
, 
 433      "This is an example of the wxGridSizer.  In this case all row heights " 
 434      "and column widths are kept the same as all the others and all items " 
 435      "fill their available space.  The horzontal and vertical gaps are set to " 
 439     ("More Grid Features", makeGrid2
, 
 440      "This is another example of the wxGridSizer.  This one has no gaps in the grid, " 
 441      "but various cells are given different alignment options and some of them " 
 442      "hold nested sizers." 
 445     ("Flexible Grid", makeGrid3
, 
 446      "This grid allows the rows to have different heights and the columns to have " 
 447      "different widths.  You can also specify rows and columns that are growable, " 
 448      "which we have done for the first and last row and the middle column for " 
 450      "\nThere is also a spacer in the middle cell instead of an actual window." 
 453     ("Grid with Alignment", makeGrid4
, 
 454      "New alignment flags allow for the positioning of items in any corner or centered " 
 460     ("Proportional resize", makeSimpleBoxShaped
, 
 461      "Managed items can preserve their original aspect ratio.  The last item has the " 
 462      "wxSHAPED flag set and will resize proportional to its origingal size." 
 465     ("Proportional resize with Alignments", makeShapes
, 
 466      "This one shows various alignments as well as proportional resizing for all items." 
 470 #---------------------------------------------------------------------- 
 472 class TestFrame(wxFrame
): 
 473     def __init__(self
, parent
, title
, sizerFunc
): 
 474         wxFrame
.__init
__(self
, parent
, -1, title
) 
 475         EVT_BUTTON(self
, 1010, self
.OnButton
) 
 477         self
.sizer 
= sizerFunc(self
) 
 478         self
.CreateStatusBar() 
 479         self
.SetStatusText("Resize this frame to see how the sizers respond...") 
 482         self
.SetAutoLayout(true
) 
 483         self
.SetSizer(self
.sizer
) 
 484         EVT_CLOSE(self
, self
.OnCloseWindow
) 
 486     def OnCloseWindow(self
, event
): 
 487         self
.MakeModal(false
) 
 490     def OnButton(self
, event
): 
 493 #---------------------------------------------------------------------- 
 497 class TestSelectionPanel(wxPanel
): 
 498     def __init__(self
, parent
, frame
): 
 499         wxPanel
.__init
__(self
, parent
, -1) 
 502         self
.list = wxListBox(self
, 401, 
 503                               wxDLG_PNT(self
, 10, 10), wxDLG_SZE(self
, 100, 100), 
 505         EVT_LISTBOX(self
, 401, self
.OnSelect
) 
 506         EVT_LISTBOX_DCLICK(self
, 401, self
.OnDClick
) 
 508         self
.btn 
= wxButton(self
, 402, "Try it!", wxDLG_PNT(self
, 120, 10)).SetDefault() 
 509         EVT_BUTTON(self
, 402, self
.OnDClick
) 
 511         self
.text 
= wxTextCtrl(self
, -1, "", 
 512                                wxDLG_PNT(self
, 10, 115), 
 513                                wxDLG_SZE(self
, 200, 50), 
 514                                wxTE_MULTILINE | wxTE_READONLY
) 
 516         for item 
in theTests
: 
 517             self
.list.Append(item
[0]) 
 521     def OnSelect(self
, event
): 
 522         pos 
= self
.list.GetSelection() 
 523         self
.text
.SetValue(theTests
[pos
][2]) 
 526     def OnDClick(self
, event
): 
 527         pos 
= self
.list.GetSelection() 
 528         title 
= theTests
[pos
][0] 
 529         func 
= theTests
[pos
][1] 
 532             win 
= TestFrame(self
, title
, func
) 
 533             win
.CentreOnParent(wxBOTH
) 
 537 #---------------------------------------------------------------------- 
 539 def runTest(frame
, nb
, log
): 
 540     win 
= TestSelectionPanel(nb
, frame
) 
 544 #wxSizer.__doc__        + '\n' + '-' * 80 + '\n' + \ 
 545 #wxBoxSizer.__doc__     + '\n' + '-' * 80 + '\n' + \ 
 546 #wxBorderSizer.__doc__ 
 548 #---------------------------------------------------------------------- 
 552 if __name__ 
== '__main__': 
 554     class MainFrame(wxFrame
): 
 556             wxFrame
.__init
__(self
, None, -1, "Testing...") 
 558             self
.CreateStatusBar() 
 559             mainmenu 
= wxMenuBar() 
 561             menu
.Append(200, 'E&xit', 'Get the heck outta here!') 
 562             mainmenu
.Append(menu
, "&File") 
 563             self
.SetMenuBar(mainmenu
) 
 564             EVT_MENU(self
, 200, self
.OnExit
) 
 565             self
.panel 
= TestSelectionPanel(self
, self
) 
 566             self
.SetSize(wxSize(400, 380)) 
 567             EVT_CLOSE(self
, self
.OnCloseWindow
) 
 569         def OnCloseWindow(self
, event
): 
 572         def OnExit(self
, event
): 
 576     class TestApp(wxApp
): 
 580             self
.SetTopWindow(frame
) 
 587 #----------------------------------------------------------------------