Tkinter Menu 建立子菜单
建立菜单时所使用的概念如下。
menubar = Menu(root)
filemenu = Menu(menubar)
menu.add_cascade(label="File", menu=filemenu)
上述是建立File菜单。所谓的建立子菜单就是在File菜单内另外建立一个子菜单。如果所要建立的子菜单是Find子菜单,所要建的对象是findmenu,此时可以使用下列命令。
findmenu = Menu(filemenu)
xxx # 这是建立子菜单列表
xxx # 这是建立子菜单列表
filemenu.add_cascade(label="Find", menu=findmenu)
示例1
在File菜单内建立Find子菜单,这个子菜单内有Find Next和Find Pre命令。
from tkinter import *
from tkinter import messagebox
def findNext():
messagebox.showinfo("Find Next","Find Next")
def findPrevious():
messagebox.showinfo("Find Previous","Find Previous")
root = Tk()
root.title("apidemos.com")
root.geometry("300x180")
menubar = Menu(root) # 建立最上层菜单
# 建立菜单类别对象,并将此菜单类别命名为File
filemenu = Menu(menubar)
menubar.add_cascade(label="File",menu=filemenu,underline=0)
# 在File菜单内建立菜单列表
# 首先在File菜单内建立find子菜单对象
findmenu = Menu(filemenu,tearoff=False) # 取消分隔线 False
# filemenu.add_cascade(label="Find",menu=findmenu) ############## 可以提前到这
findmenu.add_command(label="Find Next",command=findNext)
findmenu.add_separator() ########################################
findmenu.add_command(label="Find Previous",command=findPrevious)
filemenu.add_cascade(label="Find",menu=findmenu) ############## 提前
# 下面是增加分隔线和建立Exit!子菜单
filemenu.add_separator()
filemenu.add_separator()############################################
filemenu.add_command(label="Exit!",command=root.destroy,underline=0)
root.config(menu=menubar)
root.mainloop()
输出:
由于在子菜单的设计中一般为省略虚线分隔线设计,所以笔者在第19行的Menu( )方法中增加了tearoff=False。