]>
git.saurik.com Git - wxWidgets.git/blob - wxPython/demo/RadioButton.py
4 #----------------------------------------------------------------------
6 class TestPanel( wx
.Panel
):
7 def __init__( self
, parent
, log
):
9 wx
.Panel
.__init
__( self
, parent
, -1 )
11 panel
= wx
.Panel( self
, -1 )
13 # 1st group of controls:
14 self
.group1_ctrls
= []
15 radio1
= wx
.RadioButton( panel
, -1, " Radio1 ", style
= wx
.RB_GROUP
)
16 text1
= wx
.TextCtrl( panel
, -1, "" )
17 radio2
= wx
.RadioButton( panel
, -1, " Radio2 " )
18 text2
= wx
.TextCtrl( panel
, -1, "" )
19 radio3
= wx
.RadioButton( panel
, -1, " Radio3 " )
20 text3
= wx
.TextCtrl( panel
, -1, "" )
21 self
.group1_ctrls
.append((radio1
, text1
))
22 self
.group1_ctrls
.append((radio2
, text2
))
23 self
.group1_ctrls
.append((radio3
, text3
))
25 # 2nd group of controls:
26 self
.group2_ctrls
= []
27 radio4
= wx
.RadioButton( panel
, -1, " Radio1 ", style
= wx
.RB_GROUP
)
28 text4
= wx
.TextCtrl( panel
, -1, "" )
29 radio5
= wx
.RadioButton( panel
, -1, " Radio2 " )
30 text5
= wx
.TextCtrl( panel
, -1, "" )
31 radio6
= wx
.RadioButton( panel
, -1, " Radio3 " )
32 text6
= wx
.TextCtrl( panel
, -1, "" )
33 self
.group2_ctrls
.append((radio4
, text4
))
34 self
.group2_ctrls
.append((radio5
, text5
))
35 self
.group2_ctrls
.append((radio6
, text6
))
37 # Layout controls on panel:
38 vs
= wx
.BoxSizer( wx
.VERTICAL
)
40 box1_title
= wx
.StaticBox( panel
, -1, "Group 1" )
41 box1
= wx
.StaticBoxSizer( box1_title
, wx
.VERTICAL
)
42 grid1
= wx
.FlexGridSizer( 0, 2, 0, 0 )
44 for radio
, text
in self
.group1_ctrls
:
45 grid1
.AddWindow( radio
, 0, wx
.ALIGN_CENTRE|wx
.LEFT|wx
.RIGHT|wx
.TOP
, 5 )
46 grid1
.AddWindow( text
, 0, wx
.ALIGN_CENTRE|wx
.LEFT|wx
.RIGHT|wx
.TOP
, 5 )
48 box1
.AddSizer( grid1
, 0, wx
.ALIGN_CENTRE|wx
.ALL
, 5 )
49 vs
.AddSizer( box1
, 0, wx
.ALIGN_CENTRE|wx
.ALL
, 5 )
51 box2_title
= wx
.StaticBox( panel
, -1, "Group 2" )
52 box2
= wx
.StaticBoxSizer( box2_title
, wx
.VERTICAL
)
53 grid2
= wx
.FlexGridSizer( 0, 2, 0, 0 )
55 for radio
, text
in self
.group2_ctrls
:
56 grid2
.AddWindow( radio
, 0, wx
.ALIGN_CENTRE|wx
.LEFT|wx
.RIGHT|wx
.TOP
, 5 )
57 grid2
.AddWindow( text
, 0, wx
.ALIGN_CENTRE|wx
.LEFT|wx
.RIGHT|wx
.TOP
, 5 )
59 box2
.AddSizer( grid2
, 0, wx
.ALIGN_CENTRE|wx
.ALL
, 5 )
60 vs
.AddSizer( box2
, 0, wx
.ALIGN_CENTRE|wx
.ALL
, 5 )
67 # Setup event handling and initial state for controls:
68 for radio
, text
in self
.group1_ctrls
:
69 self
.Bind(wx
.EVT_RADIOBUTTON
, self
.OnGroup1Select
, radio
)
71 for radio
, text
in self
.group2_ctrls
:
72 self
.Bind(wx
.EVT_RADIOBUTTON
, self
.OnGroup2Select
, radio
)
74 for radio
, text
in self
.group1_ctrls
+ self
.group2_ctrls
:
78 def OnGroup1Select( self
, event
):
79 radio_selected
= event
.GetEventObject()
80 self
.log
.write('Group1 %s selected\n' % radio_selected
.GetLabel() )
82 for radio
, text
in self
.group1_ctrls
:
83 if radio
is radio_selected
:
88 def OnGroup2Select( self
, event
):
89 radio_selected
= event
.GetEventObject()
90 self
.log
.write('Group2 %s selected\n' % radio_selected
.GetLabel() )
92 for radio
, text
in self
.group2_ctrls
:
93 if radio
is radio_selected
:
98 #----------------------------------------------------------------------
100 def runTest( frame
, nb
, log
):
101 win
= TestPanel( nb
, log
)
104 #----------------------------------------------------------------------
110 This demo shows how individual radio buttons can be used to build
111 more complicated selection mechanisms...
113 It uses 2 groups of wx.RadioButtons, where the groups are defined by
114 instantiation. When a wx.RadioButton is created with the <I>wx.RB_GROUP</I>
115 style, all subsequent wx.RadioButtons created without it are implicitly
116 added to that group by the framework.
122 if __name__
== '__main__':
125 run
.main(['', os
.path
.basename(sys
.argv
[0])])