Tkinter的Menu组件

一、简介

Tkinter提供了一个Menu组件,用于实现顶级菜单、下来菜单、弹出菜单

二、创建顶级菜单

需要先创建一个菜单实例,然后使用add()方法将命令和其他子菜单添加进去

 

from tkinter import *

root = Tk()

def callback():
    print("~被调用了~")

# 创建一个顶级菜单
menubar = Menu(root)
menubar.add_command(label="输出", command=callback)
menubar.add_command(label="啥也不干")
menubar.add_command(label="退出", command=root.quit)

# 显示菜单
root.config(menu=menubar)

mainloop()

运行:

依次点击输出,啥也不干,退出

Tkinter的Menu组件

Tkinter的Menu组件


 三、创建下拉菜单

下拉菜单大同小异,主要区别是最后需要添加到主菜单上去,而不是窗口上去

from tkinter import *

root = Tk()

def callback():
    print("~被调用了~")

# 创建一个顶级菜单
menubar = Menu(root)

# 创建一个下拉菜单“文件”,然后将它添加到顶级菜单中
filemenu = Menu(menubar, tearoff=False)
filemenu.add_command(label="打开", command=callback)
filemenu.add_command(label="保存", command=callback)
#生成一条分割线
filemenu.add_separator()
filemenu.add_command(label="退出", command=root.quit)
#给顶级菜单添加文件菜单
menubar.add_cascade(label="文件", menu=filemenu)

# 创建另一个下拉菜单“编辑”,然后将它添加到顶级菜单中
editmenu = Menu(menubar, tearoff=False)
editmenu.add_command(label="剪切", command=callback)
editmenu.add_command(label="拷贝", command=callback)
editmenu.add_command(label="粘贴", command=callback)
menubar.add_cascade(label="编辑", menu=editmenu)

# 显示菜单
root.config(menu=menubar)

mainloop()

运行:

 

Tkinter的Menu组件

四、创建弹出菜单

点击鼠标右键时会弹出菜单选线,使用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)

mainloop()

 

运行:

Tkinter的Menu组件