| #! /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() |