symbian-qemu-0.9.1-12/python-2.6.1/Demo/tkinter/matt/two-radio-groups.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 from Tkinter import *
       
     2 
       
     3 #       The way to think about this is that each radio button menu
       
     4 #       controls a different variable -- clicking on one of the
       
     5 #       mutually exclusive choices in a radiobutton assigns some value
       
     6 #       to an application variable you provide. When you define a
       
     7 #       radiobutton menu choice, you have the option of specifying the
       
     8 #       name of a varaible and value to assign to that variable when
       
     9 #       that choice is selected. This clever mechanism relieves you,
       
    10 #       the programmer, from having to write a dumb callback that
       
    11 #       probably wouldn't have done anything more than an assignment
       
    12 #       anyway. The Tkinter options for this follow their Tk
       
    13 #       counterparts:
       
    14 #       {"variable" : my_flavor_variable, "value" : "strawberry"}
       
    15 #       where my_flavor_variable is an instance of one of the
       
    16 #       subclasses of Variable, provided in Tkinter.py (there is
       
    17 #       StringVar(), IntVar(), DoubleVar() and BooleanVar() to choose
       
    18 #       from)
       
    19 
       
    20 
       
    21 
       
    22 def makePoliticalParties(var):
       
    23     # make menu button
       
    24     Radiobutton_button = Menubutton(mBar, text='Political Party',
       
    25                                     underline=0)
       
    26     Radiobutton_button.pack(side=LEFT, padx='2m')
       
    27 
       
    28     # the primary pulldown
       
    29     Radiobutton_button.menu = Menu(Radiobutton_button)
       
    30 
       
    31     Radiobutton_button.menu.add_radiobutton(label='Republican',
       
    32                                             variable=var, value=1)
       
    33 
       
    34     Radiobutton_button.menu.add('radiobutton', {'label': 'Democrat',
       
    35                                                 'variable' : var,
       
    36                                                 'value' : 2})
       
    37 
       
    38     Radiobutton_button.menu.add('radiobutton', {'label': 'Libertarian',
       
    39                                                 'variable' : var,
       
    40                                                 'value' : 3})
       
    41 
       
    42     var.set(2)
       
    43 
       
    44     # set up a pointer from the file menubutton back to the file menu
       
    45     Radiobutton_button['menu'] = Radiobutton_button.menu
       
    46 
       
    47     return Radiobutton_button
       
    48 
       
    49 
       
    50 def makeFlavors(var):
       
    51     # make menu button
       
    52     Radiobutton_button = Menubutton(mBar, text='Flavors',
       
    53                                     underline=0)
       
    54     Radiobutton_button.pack(side=LEFT, padx='2m')
       
    55 
       
    56     # the primary pulldown
       
    57     Radiobutton_button.menu = Menu(Radiobutton_button)
       
    58 
       
    59     Radiobutton_button.menu.add_radiobutton(label='Strawberry',
       
    60                                             variable=var, value='Strawberry')
       
    61 
       
    62     Radiobutton_button.menu.add_radiobutton(label='Chocolate',
       
    63                                             variable=var, value='Chocolate')
       
    64 
       
    65     Radiobutton_button.menu.add_radiobutton(label='Rocky Road',
       
    66                                             variable=var, value='Rocky Road')
       
    67 
       
    68     # choose a default
       
    69     var.set("Chocolate")
       
    70 
       
    71     # set up a pointer from the file menubutton back to the file menu
       
    72     Radiobutton_button['menu'] = Radiobutton_button.menu
       
    73 
       
    74     return Radiobutton_button
       
    75 
       
    76 
       
    77 def printStuff():
       
    78     print "party is", party.get()
       
    79     print "flavor is", flavor.get()
       
    80     print
       
    81 
       
    82 #################################################
       
    83 #### Main starts here ...
       
    84 root = Tk()
       
    85 
       
    86 
       
    87 # make a menu bar
       
    88 mBar = Frame(root, relief=RAISED, borderwidth=2)
       
    89 mBar.pack(fill=X)
       
    90 
       
    91 # make two application variables,
       
    92 # one to control each radio button set
       
    93 party = IntVar()
       
    94 flavor = StringVar()
       
    95 
       
    96 Radiobutton_button = makePoliticalParties(party)
       
    97 Radiobutton_button2 = makeFlavors(flavor)
       
    98 
       
    99 # finally, install the buttons in the menu bar.
       
   100 # This allows for scanning from one menubutton to the next.
       
   101 mBar.tk_menuBar(Radiobutton_button, Radiobutton_button2)
       
   102 
       
   103 b = Button(root, text="print party and flavor", foreground="red",
       
   104            command=printStuff)
       
   105 b.pack(side=TOP)
       
   106 
       
   107 root.title('menu demo')
       
   108 root.iconname('menu demo')
       
   109 
       
   110 root.mainloop()