]> git.saurik.com Git - wxWidgets.git/blame - wxPython/demo/RadioButton.py
Faster Deselect
[wxWidgets.git] / wxPython / demo / RadioButton.py
CommitLineData
8fa876ca
RD
1
2import wx
3
1e4a197e
RD
4#----------------------------------------------------------------------
5
8fa876ca 6class TestPanel( wx.Panel ):
1e4a197e
RD
7 def __init__( self, parent, log ):
8
8fa876ca 9 wx.Panel.__init__( self, parent, -1 )
1e4a197e 10 self.log = log
8fa876ca 11 panel = wx.Panel( self, -1 )
1e4a197e 12
0c8f2860
RD
13 # Layout controls on panel:
14 vs = wx.BoxSizer( wx.VERTICAL )
15
16 box1_title = wx.StaticBox( panel, -1, "Group 1" )
17 box1 = wx.StaticBoxSizer( box1_title, wx.VERTICAL )
18 grid1 = wx.FlexGridSizer( 0, 2, 0, 0 )
19
1e4a197e
RD
20 # 1st group of controls:
21 self.group1_ctrls = []
8fa876ca 22 radio1 = wx.RadioButton( panel, -1, " Radio1 ", style = wx.RB_GROUP )
8fa876ca 23 radio2 = wx.RadioButton( panel, -1, " Radio2 " )
8fa876ca 24 radio3 = wx.RadioButton( panel, -1, " Radio3 " )
3d3e7dcb
RD
25 text1 = wx.TextCtrl( panel, -1, "" )
26 text2 = wx.TextCtrl( panel, -1, "" )
8fa876ca 27 text3 = wx.TextCtrl( panel, -1, "" )
1e4a197e
RD
28 self.group1_ctrls.append((radio1, text1))
29 self.group1_ctrls.append((radio2, text2))
30 self.group1_ctrls.append((radio3, text3))
31
1e4a197e 32 for radio, text in self.group1_ctrls:
d7403ad2
RD
33 grid1.Add( radio, 0, wx.ALIGN_CENTRE|wx.LEFT|wx.RIGHT|wx.TOP, 5 )
34 grid1.Add( text, 0, wx.ALIGN_CENTRE|wx.LEFT|wx.RIGHT|wx.TOP, 5 )
8fa876ca 35
d7403ad2
RD
36 box1.Add( grid1, 0, wx.ALIGN_CENTRE|wx.ALL, 5 )
37 vs.Add( box1, 0, wx.ALIGN_CENTRE|wx.ALL, 5 )
8fa876ca
RD
38
39 box2_title = wx.StaticBox( panel, -1, "Group 2" )
40 box2 = wx.StaticBoxSizer( box2_title, wx.VERTICAL )
41 grid2 = wx.FlexGridSizer( 0, 2, 0, 0 )
42
0c8f2860
RD
43 # 2nd group of controls:
44 self.group2_ctrls = []
45 radio4 = wx.RadioButton( panel, -1, " Radio1 ", style = wx.RB_GROUP )
46 radio5 = wx.RadioButton( panel, -1, " Radio2 " )
47 radio6 = wx.RadioButton( panel, -1, " Radio3 " )
48 text4 = wx.TextCtrl( panel, -1, "" )
49 text5 = wx.TextCtrl( panel, -1, "" )
50 text6 = wx.TextCtrl( panel, -1, "" )
51 self.group2_ctrls.append((radio4, text4))
52 self.group2_ctrls.append((radio5, text5))
53 self.group2_ctrls.append((radio6, text6))
54
1e4a197e 55 for radio, text in self.group2_ctrls:
d7403ad2
RD
56 grid2.Add( radio, 0, wx.ALIGN_CENTRE|wx.LEFT|wx.RIGHT|wx.TOP, 5 )
57 grid2.Add( text, 0, wx.ALIGN_CENTRE|wx.LEFT|wx.RIGHT|wx.TOP, 5 )
8fa876ca 58
d7403ad2
RD
59 box2.Add( grid2, 0, wx.ALIGN_CENTRE|wx.ALL, 5 )
60 vs.Add( box2, 0, wx.ALIGN_CENTRE|wx.ALL, 5 )
1e4a197e
RD
61
62 panel.SetSizer( vs )
63 vs.Fit( panel )
64 panel.Move( (50,50) )
65 self.panel = panel
66
67 # Setup event handling and initial state for controls:
68 for radio, text in self.group1_ctrls:
8fa876ca 69 self.Bind(wx.EVT_RADIOBUTTON, self.OnGroup1Select, radio )
1e4a197e
RD
70
71 for radio, text in self.group2_ctrls:
8fa876ca 72 self.Bind(wx.EVT_RADIOBUTTON, self.OnGroup2Select, radio )
1e4a197e
RD
73
74 for radio, text in self.group1_ctrls + self.group2_ctrls:
75 radio.SetValue(0)
76 text.Enable(False)
77
1e4a197e
RD
78 def OnGroup1Select( self, event ):
79 radio_selected = event.GetEventObject()
80 self.log.write('Group1 %s selected\n' % radio_selected.GetLabel() )
8fa876ca 81
1e4a197e
RD
82 for radio, text in self.group1_ctrls:
83 if radio is radio_selected:
84 text.Enable(True)
85 else:
86 text.Enable(False)
87
88 def OnGroup2Select( self, event ):
89 radio_selected = event.GetEventObject()
90 self.log.write('Group2 %s selected\n' % radio_selected.GetLabel() )
8fa876ca 91
1e4a197e
RD
92 for radio, text in self.group2_ctrls:
93 if radio is radio_selected:
94 text.Enable(True)
95 else:
96 text.Enable(False)
97
98#----------------------------------------------------------------------
99
100def runTest( frame, nb, log ):
101 win = TestPanel( nb, log )
102 return win
103
104#----------------------------------------------------------------------
105
106
107overview = """\
108<html><body>
109<P>
110This demo shows how individual radio buttons can be used to build
111more complicated selection mechanisms...
112<P>
95bfd958
RD
113It uses 2 groups of wx.RadioButtons, where the groups are defined by
114instantiation. When a wx.RadioButton is created with the <I>wx.RB_GROUP</I>
115style, all subsequent wx.RadioButtons created without it are implicitly
1e4a197e
RD
116added to that group by the framework.
117</body></html>
118"""
119
120
121
122if __name__ == '__main__':
123 import sys,os
124 import run
8eca4fef 125 run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
1e4a197e 126