在之前的blog中有提到python的tkinter中的菜单操作
下面是tkinter中复选菜单的操作
运行效果:
1.初始化的时候,最后一个子菜单被选中。
2.选择子菜单项,所触发的事件...
==============================================================
代码部分:
==============================================================
1 from tkinter import *
2
3 __author__ = {'name' : 'Hongten',
4 'mail' : 'hongtenzone@foxmail.com',
5 'blog' : 'http://www.cnblogs.com/',
6 'QQ': '648719819',
7 'created' : '2013-09-10'}
8 #状态标志
9 pepperonis = False
10 anchovies = 0
11
12 def print_pepperonis():
13 global pepperonis
14 pepperonis = not pepperonis
15 print('pepperonis?', pepperonis)
16
17 def print_anchovies():
18 '''从这里我们可以判断出'Anchovy'子菜单是否处于选择状态'''
19 global anchovies
20 anchovies = not anchovies
21 print("anchovies?", anchovies)
22
23 def makeCheckbuttonMenu():
24 # make menu button
25 Checkbutton_button = Menubutton(mBar, text='Checkbutton Menus',
26 underline=0)
27 Checkbutton_button.pack(side=LEFT, padx='2m')
28
29 # the primary pulldown
30 Checkbutton_button.menu = Menu(Checkbutton_button)
31
32 # and all the check buttons. Note that the "variable" "onvalue" and "offvalue" options
33 # are not supported correctly at present. You have to do all your application
34 # work through the calback.
35 Checkbutton_button.menu.add_checkbutton(label='Pepperoni', command=print_pepperonis)
36 Checkbutton_button.menu.add_checkbutton(label='Sausage')
37 Checkbutton_button.menu.add_checkbutton(label='Extra Cheese')
38
39 # so here's a callback
40 Checkbutton_button.menu.add_checkbutton(label='Anchovy',
41 command=print_anchovies)
42 #初始化时,被选中状态
43 #
44 # and start with anchovies selected to be on. Do this by
45 # calling invoke on this menu option. To refer to the "anchovy" menu
46 # entry we need to know it's index. To do this, we use the index method
47 # which takes arguments of several forms:
48 #
49 # argument what it does
50 # -----------------------------------
51 # a number -- this is useless.
52 # "last" -- last option in the menu
53 # "none" -- used with the activate command. see the man page on menus
54 # "active" -- the currently active menu option. A menu option is made active
55 # with the 'activate' method
56 # "@number" -- where 'number' is an integer and is treated like a y coordinate in pixels
57 # string pattern -- this is the option used below, and attempts to match "labels" using the
58 # rules of Tcl_StringMatch
59 Checkbutton_button.menu.invoke(Checkbutton_button.menu.index('Anchovy'))
60
61 # set up a pointer from the file menubutton back to the file menu
62 Checkbutton_button['menu'] = Checkbutton_button.menu
63
64 return Checkbutton_button
65
66
67 #################################################
68 #### Main starts here ...
69 root = Tk()
70 root.geometry('250x200')
71 root.title('menu demo')
72 root.iconname('menu demo')
73
74 # make a menu bar
75 mBar = Frame(root, relief=RAISED, borderwidth=2)
76 mBar.pack(fill=X)
77
78 Checkbutton_button = makeCheckbuttonMenu()
79
80 mBar.tk_menuBar(Checkbutton_button)
81
82 root.mainloop()