1 #coding=gbk
2 from tkinter import *
3 #root = Tk()
4 #def hello():
5 #print ("hello menu")
6 #menubar = Menu(root)
7 ##创建主菜单,每个菜单对应的回调函数都是hello
8 #for item in ['Python','PHP','CPP','C','Java','JavaScript','VBScript']:
9 ##添加菜单函数
10 #menubar.add_command(label = item,command = hello)
11 ##将root的menu属性设置为menubar
12 #root['menu'] = menubar
13 #root.mainloop()
14
15
16 #root = Tk()
17 #def hello():
18 #print ('hello menu')
19 #menubar = Menu(root)
20 #
21 #filemenu = Menu(menubar,tearoff = 0)
22 #for item in ['Python','PHP','CPP','C','Java','JavaScript','VBScript']:
23 ##添加菜单函数
24 #filemenu.add_commad(label = item,command = hello)
25 ##将menubar的menu属性指定为filemenu,即filemenu为menubar的下拉菜单
26 #menubar.add_cascade(label = 'Language',menu = filemenu)
27 #root['menu'] = menubar
28 #root.mainloop()
29
30
31 #'''3.向菜单中添加Checkbutton项'''
32 ## -*- coding: cp936 -*-
33 #from Tkinter import *
34 #root = Tk()
35 #每次打印出各个变量的当前值
36 #root = Tk()
37 ##每次打印出各个变量的当前值
38 #def printItem():
39 #print ('Python = '),vPython.get()
40 #print ('PHP = '),vPHP.get()
41 #print ('CPP = '),vCPP.get()
42 #print ('C = '),vC.get()
43 #print ('Java = '),vJava.get()
44 #print ('JavaScript = '),vJavaScript.get()
45 #print ('VBScript = '),vVBScript.get()
46 #
47 #menubar = Menu(root)
48 #
49 #vPython = StringVar()
50 #vPHP = StringVar()
51 #vCPP = StringVar()
52 #vC = StringVar()
53 #vJava = StringVar()
54 #vJavaScript = StringVar()
55 #vVBScript = StringVar()
56 #
57 #filemenu = Menu(menubar,tearoff = 0)
58 #for k,v in {'Python':vPython,
59 #'PHP':vPHP,
60 #'CPP':vCPP,
61 #'C':vC,
62 #'Java':vJava,
63 #'JavaScript':vJavaScript,
64 #'VBScript':vVBScript}.items():
65 ##绑定变量与回调函数
66 #filemenu.add_checkbutton(label = k,command = printItem,variable = v)
67 ##将menubar的menu属性指定为filemenu,即filemenu为menubar的下拉菜单
68 #menubar.add_cascade(label = 'Language',menu = filemenu)
69 #root['menu'] = menubar
70 #root.mainloop()
71 #程序运行,使用了Checkbutton,并通过printItem将每个Checkbutton在当前值打印出来。
72
73
74
75 #'''4.向菜单 中添加Radiobutton项'''
76 #
77 #root = Tk()
78 #
79 #menubar = Menu(root)
80 #vLang = StringVar()
81 ##每次打印出当前选中的语言
82 #def printItem():
83 #print ('vLang = '),vLang.get()
84 #filemenu = Menu(menubar,tearoff = 0)
85 #for k in ['Python','PHP','CPP','C','Java','JavaScript','VBScript']:
86 ##绑定变量与回调函数,指定的变量vLang将这几项划为一组
87 #filemenu.add_radiobutton(label = k,command = printItem,variable = vLang)
88 ##将menubar的menu属性指定为filemenu,即filemenu为menubar的下拉菜单
89 #menubar.add_cascade(label = 'Language',menu = filemenu)
90 #root['menu'] = menubar
91 #root.mainloop()
92 ##程序每次打印出当前选中的语言
93 ##与Checkbutton不同的是,同一个组内只有一个处于选中状态。
94
95
96 '''5.向菜单中添加分隔符'''
97 ## -*- coding: cp936 -*-
98 #
99 #root = Tk()
100 #menubar = Menu(root)
101 #
102 ##每次打印出当前选中的语言
103 #def printItem():
104 #print ('add_separator')
105 #
106 #filemenu = Menu(menubar,tearoff = 0)
107 #for k in ['Python','PHP','CPP','C','Java','JavaScript','VBScript']:
108 #filemenu.add_command(label = k,command = printItem)
109 ##将各个菜单项使用分隔符隔开
110 #filemenu.add_separator()
111 #menubar.add_cascade(label = 'Language',menu = filemenu)
112 #root['menu'] = menubar
113 #root.mainloop()
114 ##分隔符将相关的菜单项进行分组,只是UI上的实现,程序上没有任何改变,它也不执行任何的命令
115
116
117
118 '''6.将以上的例5中的菜单改为右击弹出菜单'''
119 #方法是通过绑定鼠标右键,每当点击时弹出这个菜单,去掉与root的关联
120 #-*- coding: cp936 -*-
121
122 #root = Tk()
123 #menubar = Menu(root)
124 #
125 #def printItem():
126 #print ('popup menu')
127 #
128 #filemenu = Menu(menubar,tearoff = 0)
129 #for k in ['Python','PHP','CPP','C','Java','JavaScript','VBScript']:
130 #filemenu.add_command(label = k,command = printItem)
131 #filemenu.add_separator()
132 #menubar.add_cascade(label = 'Language',menu = filemenu)
133 ##此时就不要将root的menu设置为menubar了
134 ##root['menu'] = menubar
135 #def popup(event):
136 ##显示菜单
137 ##这里设置右键点击显示菜单
138 #menubar.post(event.x_root,event.y_root)
139 ##在这里相应鼠标的右键事件,右击时调用popup,此时与菜单绑定的是root,可以设置为其它的控件,在绑定的控件上右击就可以弹出菜单
140 #root.bind('',popup)
141 #root.mainloop()
142 ##运行测试一个,可以看到各个菜单 项的功能都是可以使用的,所以弹出菜单与一般的菜单功能是一样的,只是弹出的方式不同而已。
143
144
145
146 '''7.以下的代码演示了菜单项的操作方法,包括添加各种菜单项,删除一个或多个菜单项'''
147 #-*- coding: cp936 -*-
148
149 root =Tk()150 menubar =Menu(root)151
152 defprintItem():153 print ('add_separator')154
155 filemenu = Menu(menubar,tearoff =0)156 for k in range(5):157 filemenu.add_command(label = str(k),command =printItem)158 menubar.add_cascade(label = 'Language',menu =filemenu)159
160 '''以下为向菜单中添加项的操作'''
161 #在索引1添加一菜单command项
162 filemenu.insert_command(1,label = '1000',command =printItem)163 #在索引2添加一菜单checkbutton项
164 filemenu.insert_checkbutton(2,label = '2000',command =printItem)165 #在索引3添加一菜单radiobutton项
166 filemenu.insert_radiobutton(3,label = '3000',command =printItem)167 #将新添加的菜单项使用分隔符隔开
168 filemenu.insert_separator(1)169 filemenu.insert_separator(5)170
171 '''以下为删除菜单项的操作'''
172 #删除索引6-9的菜单项
173 #这两个参数是控制删除下拉列表的位置的
174 filemenu.delete(4,9)175 #删除索引为0的菜单项
176 filemenu.delete(0)177
178 root['menu'] =menubar179 root.mainloop()180 #分隔符将相关的菜单项进行分组,只是UI上的实现,程序上没有任何改变,它也不执行任何的命令