您的位置:首页 > 其它

小白学tkinter(Menu组件(菜单))

2017-08-15 00:03 405 查看
Menu组件实现顶级菜单、下拉菜单和弹出菜单功能。

方法:1、创建一个菜单实例。2、使用add()方法将菜单和其他子菜单添加进去。

第一个例子:创建顶级菜单和下拉菜单

from tkinter import *
root = Tk()
def callback():
print('我被调用了')

#一、创建菜单实例,也是一个顶级菜单
menubar = Menu(root)

#创建一个下拉菜单‘文件’,这个菜单是挂在menubar(顶级菜单)上的
#tearoff 是否关闭 '撕开’项目
filemenu = Menu(menubar,tearoff = False)
#下边是下拉菜单的具体项目,使用add_command()方法
filemenu.add_command(label = '打开',command = callback)
filemenu.add_command(label = '保存',command = callback)
#这个是添加‘分割线’方法
filemenu.add_separator()
filemenu.add_command(label = '退出',command = root.quit)
#我是这么理解的:在顶级菜单中关联‘文件’菜单
#换句话说,就是将上边的下拉列表filemenu添加到顶级菜单中
menubar.add_cascade(label = '文件',menu = filemenu)

#这个是‘编辑’菜单,同上
editmenu = Menu(menubar,tearoff = True)
editmenu.add_command(label = '复制',command = callback)
editmenu.add_command(label = '粘贴',command = callback)
editmenu.add_separator()
editmenu.add_command(label = '剪切',command = root.quit)
menubar.add_cascade(label = '编辑',menu = editmenu)

#二、显示菜单
#还可以设置成 root['menu'] = menubar   根窗口的menu属性 是 menubar
root.config(menu = menubar)
mainloop()


第二个例子:创建弹出菜单,主要使用post()方法明确的把它显示出来

from tkinter import *
root = Tk()
def callback():
print('我被调用了')
#创建一个弹出菜单
menu = Menu(root,tearoff = False)
menu.add_command(label = '撤销',command = callback)
menu.add_command(label = '重做',command = callback)

frame = Frame(root,width = 512,height = 512)
frame.pack()

def popup(event):
menu.post(event.x_root,event.y_root)
#绑定鼠标右键
frame.bind('<Button-3>',popup)

#此时就不要将root的menu设置为menubar了
#root.config(menu = menubar)
mainloop()


还可以添加单选或者多选按钮

from tkinter import *
root = Tk()
def callback():
print('我被调用了')

menubar = Menu(root)

#创建checkbutton关联变量
o = IntVar()
s = IntVar()
e = IntVar()

filemenu = Menu(menubar,tearoff = True)
filemenu.add_checkbutton(label = '打开',command = callback,variable = o)
filemenu.add_checkbutton(label = '保存',command = callback,variable = s)
filemenu.add_separator()
filemenu.add_checkbutton(label = '退出',command = root.quit,variable = e)
menubar.add_cascade(label = '文件',menu = filemenu)

#创建radiobutton关联变量
editVar = IntVar()
#设置默认选中第一个
editVar.set(1)

editmenu = Menu(menubar,tearoff = True)
#别忘了设置value
editmenu.add_radiobutton(label = '剪切',command = callback,variable = editVar,value = 1)
editmenu.add_radiobutton(label = '粘贴',command = callback,variable = editVar,value = 2)
editmenu.add_radiobutton(label = '拷贝',command = callback,variable = editVar,value = 3)
#关联到顶级菜单
menubar.add_cascade(label ='编辑',menu = editmenu )

root.config(menu = menubar)
mainloop()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tkinter menu 实例