Munu组件
Tkinter提供了一个Menu组件,用于实现顶级菜单、下拉菜单和弹出菜单。
实例1:创建一个顶级菜单(或称窗口主菜单)
1 from tkinter import * 2 3 def callback(): 4 print("被调用了") 5 6 root = Tk() 7 8 9 menubar = Menu(root)#创建一个顶级菜单 10 menubar.add_command(label="Hello",command=callback)#创建一个顶级菜单对象 11 menubar.add_command(label="Quit",command=root.quit) 12 13 #显示菜单 14 root.config(menu=menubar) 15 16 mainloop()
实例2:创建添加到主菜单上的下拉菜单
1 from tkinter import * 2 3 def callback(): 4 print("被调用了") 5 6 root = Tk() 7 8 #创建一个顶级菜单 9 menubar = Menu(root) 10 11 #创建下拉菜单filemenu包含内容 12 filemenu=Menu(menubar,tearoff=False)#创建一个从属于menubar的子菜单(下拉菜单)filemenu 13 filemenu.add_command(label="打开",command=callback)#创建一个下拉菜单对象 14 filemenu.add_command(label="保存",command=callback) 15 filemenu.add_separator()#插入分隔线 16 filemenu.add_command(label="退出",command=root.quit) 17 #创建一个顶级菜单对象“文件”,filemenu从属于这个对象(或称将filemenu添加到顶级菜单“文件”中) 18 menubar.add_cascade(label="文件",menu=filemenu) 19 20 #创建另一个下拉菜单editmenu包含内容 21 editmenu=Menu(menubar,tearoff=False)#创建一个从属于menubar的子菜单(下拉菜单)editmenu 22 editmenu.add_command(label="剪切",command=callback) 23 editmenu.add_command(label="拷贝",command=callback) 24 editmenu.add_separator()#插入分隔线 25 editmenu.add_command(label="粘贴",command=callback) 26 #创建一个顶级菜单对象“编辑”,editmenu从属于这个对象(或称将editmenu添加到顶级菜单“编辑”中) 27 menubar.add_cascade(label="编辑",menu=editmenu) 28 29 #显示菜单 30 root.config(menu=menubar) 31 32 mainloop()
实例3:创建一个弹出菜单方法
1 from tkinter import * 2 3 def callback(): 4 print("被调用了") 5 6 root = Tk() 7 8 def popup(event): 9 menu.post(event.x_root,event.y_root)#在此时鼠标位置弹出显示窗口 10 11 #创建一个顶级菜单menu 12 menu = Menu(root,tearoff=False) 13 14 #创建顶级菜单menu包含内容 15 menu.add_command(label="撤销",command=callback)#创建一个顶级菜单对象 16 menu.add_command(label="重做",command=callback) 17 #创建一个框架 18 frame = Frame(root,width=100,height=100) 19 frame.pack() 20 21 #将鼠标右键与popup方法绑定 22 frame.bind("<Button-3>",popup) 23 24 #显示菜单 25 #root.config(menu=menu) 26 27 mainloop()
实例4:菜单弹出
1 from tkinter import * 2 3 def callback(): 4 print("被调用了") 5 6 root = Tk() 7 8 def popup(event): 9 menu.post(event.x_root,event.y_root)#在此时鼠标位置弹出显示窗口 10 11 #创建一个顶级菜单menu 12 menu = Menu(root,tearoff=True) 13 14 #创建顶级菜单menu包含内容 15 menu.add_command(label="撤销",command=callback)#创建一个顶级菜单对象 16 menu.add_command(label="重做",command=callback) 17 #创建一个框架 18 frame = Frame(root,width=500,height=500) 19 frame.pack() 20 21 #将鼠标右键与popup方法绑定 22 frame.bind("<Button-3>",popup) 23 24 #显示菜单 25 #root.config(menu=menu) 26 27 mainloop()
实例5:添加单选组件radiobutton和多选按钮checkbutton
1 from tkinter import * 2 3 def callback(): 4 print("被调用了") 5 6 root = Tk() 7 8 #创建一个顶级菜单 9 menubar = Menu(root) 10 #创建checkbutton关联变量 11 openVar = IntVar() 12 saveVar = IntVar() 13 exitVar = IntVar() 14 #创建下拉菜单filemenu包含内容 15 filemenu=Menu(menubar,tearoff=True)#创建一个从属于menubar的子菜单(下拉菜单)filemenu 16 filemenu.add_checkbutton(label="打开",command=callback,variable=openVar)#创建一个下拉菜单对象 17 filemenu.add_checkbutton(label="保存",command=callback,variable=saveVar) 18 filemenu.add_separator()#插入分隔线 19 filemenu.add_checkbutton(label="退出",command=root.quit,variable=exitVar) 20 #创建一个顶级菜单对象“文件”,filemenu从属于这个对象(或称将filemenu添加到顶级菜单“文件”中) 21 menubar.add_cascade(label="文件",menu=filemenu) 22 23 #创建radiobutton关联变量 24 editVar = IntVar() 25 editVar.set(1) 26 27 #创建另一个下拉菜单editmenu包含内容 28 editmenu=Menu(menubar,tearoff=True)#创建一个从属于menubar的子菜单(下拉菜单)editmenu 29 editmenu.add_radiobutton(label="剪切",command=callback,variable=editVar,value=1) 30 editmenu.add_radiobutton(label="拷贝",command=callback,variable=editVar,value=2) 31 editmenu.add_separator()#插入分隔线 32 editmenu.add_radiobutton(label="粘贴",command=callback,variable=editVar,value=3) 33 #创建一个顶级菜单对象“编辑”,editmenu从属于这个对象(或称将editmenu添加到顶级菜单“编辑”中) 34 menubar.add_cascade(label="编辑",menu=editmenu) 35 36 #显示菜单 37 root.config(menu=menubar) 38 39 mainloop()
Menubutton组件(希望菜单按钮出现在其它位置时)
Menubutton组件是一个与Menu组件相关联的按钮,它可以放在窗口中的任意位置,并且在被按下时弹出下拉菜单
实例1:
1 from tkinter import * 2 3 def callback(): 4 print("被调用了") 5 6 root = Tk() 7 8 #创建一个顶级菜单Menubutton按钮,设置为浮起显示(RAISED) 9 mb = Menubutton(root,text="点我",relief=RAISED) 10 11 mb.pack(side=RIGHT)#设置为右中显示 12 13 #创建下拉菜单filemenu包含内容 14 filemenu = Menu(mb,tearoff=False)#创建一个从属于mb的下拉菜单filemenu 15 filemenu.add_checkbutton(label="打开",command=callback,selectcolor="yellow") 16 filemenu.add_command(label="保存",command=callback)#创建一个下拉菜单对象"保存“ 17 filemenu.add_separator() 18 filemenu.add_command(label="退出",command=root.quit) 19 #显示菜单 20 mb.config(menu=filemenu) 21 22 mainloop()
OptionMenu(选项菜单)组件
选项菜单的发明弥补了Listbox组件无法实现下拉列表框的遗憾
实例1:
1 from tkinter import * 2 3 def callback(): 4 print("被调用了") 5 6 root = Tk() 7 8 variable = StringVar()#创建字符串变量variable 9 variable.set("one")#初始值设置为"one" 10 w = OptionMenu(root,variable,"one","two","three") 11 w.pack() 12 13 mainloop()
实例2:多个选项添加到选项菜单中
1 from tkinter import * 2 3 def callback(): 4 print("被调用了") 5 6 root = Tk() 7 8 OPTIONS = [ 9 "Hadley", 10 "小土豆", 11 "yiwofeiye", 12 "RAN" 13 ] 14 15 variable = StringVar()#创建字符串变量variable 16 variable.set(OPTIONS[0])#初始值设置为"one" 17 w = OptionMenu(root,variable,*OPTIONS) 18 w.pack() 19 20 def callback(): 21 print(variable.get()) 22 23 Button(root,text="点我",command=callback).pack() 24 25 mainloop()标签:菜单,callback,Python,GUI,filemenu,Tkinter10,add,command,root From: https://www.cnblogs.com/ybqjymy/p/17651436.html