Menus are implemented as widgets in Tk, just like buttons and entries. Each menu widget consists of a number of different items in the menu.
Menus are arranged in a hierarchy. The menubar is itself a menu widget. It has several submenus with additional items. Menubars are associated with individual windows; each toplevel window can have at most one menubar.
The 'add_cascade' method adds a menu item, which itself is a menu (a submenu).
Regular menu items are called 'command' items in Tk.
A third type of menu item is the 'separator', which produces the dividing line you often see between different menu items.
# menu1.py import tkinter as tk root = tk.Tk() # root widget root.option_add('*tearOff', tk.FALSE) # remove a dashed line from submenus # create a menubar for the root window menubar = tk.Menu(root) root.config(menu=menubar) # first submenu file_menu = tk.Menu(menubar) menubar.add_cascade(label="File", menu=file_menu) file_menu.add_command(label="New", command=lambda: print("New")) file_menu.add_command(label="Open...", command=lambda: print("Open...")) file_menu.add_command(label="Save", command=lambda: print("Save")) file_menu.add_separator() # adds a separator line file_menu.add_command(label="Exit", command=lambda: print("Exit")) # second submenu edit_menu = tk.Menu(menubar) menubar.add_cascade(label="Edit", menu=edit_menu) edit_menu.add_command(label="Copy", command=lambda: print("Copy")) edit_menu.add_command(label="Paste", command=lambda: print("Paste")) edit_menu.add_separator() # adds a separator line edit_menu.add_command(label="Find...", command=lambda: print("Find...")) edit_menu.add_command(label="Replace...", command=lambda: print("Replace...")) # submenu tools_menu = tk.Menu(menubar) menubar.add_cascade(label="Tools", menu=tools_menu) tools_menu.add_command(label="Scripts", command=lambda: print("Scripts")) # submenu help_menu = tk.Menu(menubar) menubar.add_cascade(label="Help", menu=help_menu) help_menu.add_command(label="About...", command=lambda: print("About...")) root.mainloop()