#! /usr/bin/env python # radiogroups.py # # Demonstrate multiple groups of radio buttons import stdwin from Buttons import * from WindowParent import WindowParent, MainLoop from HVSplit import HSplit, VSplit def main(): # # Create the widget hierarchy, top-down # # 1. Create the window # window = WindowParent().create('Radio Groups', (0, 0)) # # 2. Create a horizontal split to contain the groups # topsplit = HSplit().create(window) # # 3. Create vertical splits, one for each group # group1 = VSplit().create(topsplit) group2 = VSplit().create(topsplit) group3 = VSplit().create(topsplit) # # 4. Create individual radio buttons, each in their own split # b11 = RadioButton().definetext(group1, 'Group 1 button 1') b12 = RadioButton().definetext(group1, 'Group 1 button 2') b13 = RadioButton().definetext(group1, 'Group 1 button 3') # b21 = RadioButton().definetext(group2, 'Group 2 button 1') b22 = RadioButton().definetext(group2, 'Group 2 button 2') b23 = RadioButton().definetext(group2, 'Group 2 button 3') # b31 = RadioButton().definetext(group3, 'Group 3 button 1') b32 = RadioButton().definetext(group3, 'Group 3 button 2') b33 = RadioButton().definetext(group3, 'Group 3 button 3') # # 5. Define the grouping for the radio buttons. # Note: this doesn't have to be the same as the # grouping is splits (although it usually is). # Also set the 'hook' procedure for each button # list1 = [b11, b12, b13] list2 = [b21, b22, b23] list3 = [b31, b32, b33] # for b in list1: b.group = list1 b.on_hook = myhook for b in list2: b.group = list2 b.on_hook = myhook for b in list3: b.group = list3 b.on_hook = myhook # # 6. Select a default button in each group # b11.select(1) b22.select(1) b33.select(1) # # 6. Realize the window # window.realize() # # 7. Dispatch events until the window is closed # MainLoop() # # 8. Report final selections # print 'You selected the following choices:' if b11.selected: print '1.1' if b12.selected: print '1.2' if b13.selected: print '1.3' if b21.selected: print '2.1' if b22.selected: print '2.2' if b23.selected: print '2.3' if b31.selected: print '3.1' if b32.selected: print '3.2' if b33.selected: print '3.3' # My 'hook' procedure # This is placed as 'hook' attribute on each button. # The example just prints the title of the selected button. # def myhook(self): print 'Selected:', self.text main()