Tkinter – Create Submenus

Create Submenus in Tkinter

To create submenus in Tkinter, create a submenu using Tk.Menu class, and cascade it to a menu using Menu.add_cascade() method.

A submenu is also a Menu object just like another menu, but to which menu we cascade the submenu makes the difference of how it is displayed in the UI.

For example, consider the following code snippet which shows the hierarchy of the menus. The items are ignored for explanation purpose.

# Menu bar
menu_bar = tk.Menu(window)
# A menu in Menu bar
menu_1 = tk.Menu(menu_bar, tearoff=0)
# A submenu in a menu
submenu_1 = tk.Menu(menu_1, tearoff=0)
# Add submenu to the menu
menu_1.add_cascade(label="Submenu1", menu=submenu_1)
# Add menu to the menu bar
menu_bar.add_cascade(label="Menu1", menu=menu_1)
  • menu_bar is the master of menu_1.
  • menu_1 is the master of submenu_1.

In this tutorial, you will learn how to create a submenu in a Menu in Tkinter, as shown in the following example menu.

Menu1          # Menu1 is a menu in menu bar
  Item1         # item under Menu1
  Item2         # item under Menu1
  SubMenu1      # submenu under Menu1
    Item3         # item under SubMenu1
    Item4         # item under SubMenu1
    Item5         # item under SubMenu1


In this example, we shall create a window, create a menu bar, create a menu, say Menu1, then create a submenu Submenu1 under Menu1.

Python Program

import tkinter as tk

# Create the main window
window = tk.Tk()

# Create the menu bar
menu_bar = tk.Menu(window)

# Create a menu "Menu1" in menu bar
menu_1 = tk.Menu(menu_bar, tearoff=0)

# Create Submenu
submenu_1 = tk.Menu(menu_1, tearoff=0)

# Add items to Submenu

# Add items to Menu1
menu_1.add_cascade(label="SubMenu1", menu=submenu_1)

# Add the menu "Menu1" to the menu bar
menu_bar.add_cascade(label="Menu1", menu=menu_1)

# Attach the menu bar to the main window

# Start the Tkinter event loop



In this Python Tkinter tutorial, we learned how to create Submenus in Tkinter, with the help of examples.

Code copied to clipboard successfully 👍