This tutorial guides you through creating and utilizing menubars in Tkinter, a Python library for building graphical user interfaces (GUIs). Prior familiarity with basic Tkinter widgets (like frames and labels) is beneficial.
Table of Contents
1. Creating a Basic Menubar
Let’s begin by constructing a simple menubar with a “File” menu, featuring “New,” “Open,” and “Exit” options. This initial example focuses solely on the visual structure; the menu items won’t yet perform any actions.
import tkinter as tk
root = tk.Tk()
root.title("Tkinter Menubar Example")
menubar = tk.Menu(root)
filemenu = tk.Menu(menubar, tearoff=0)
filemenu.add_command(label="New")
filemenu.add_command(label="Open")
filemenu.add_separator()
filemenu.add_command(label="Exit")
menubar.add_cascade(label="File", menu=filemenu)
root.config(menu=menubar)
root.mainloop()
This code creates the main window (root
), the menubar, and the “File” menu. tearoff=0
prevents the menu from detaching. add_command
adds menu items, add_separator
inserts a visual separator, and add_cascade
integrates the “File” menu into the menubar. root.config(menu=menubar)
displays the menubar.
2. Adding Functionality to Menu Items
Now, let’s enhance the menu items with functionality. We’ll connect the “Exit” command to close the application and add actions for “New” and “Open”.
import tkinter as tk
def new_file():
print("New file action triggered!")
def open_file():
print("Open file action triggered!")
def exit_app():
root.destroy() # Better practice than root.quit()
root = tk.Tk()
root.title("Tkinter Menubar Example with Commands")
menubar = tk.Menu(root)
filemenu = tk.Menu(menubar, tearoff=0)
filemenu.add_command(label="New", command=new_file)
filemenu.add_command(label="Open", command=open_file)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=exit_app)
menubar.add_cascade(label="File", menu=filemenu)
root.config(menu=menubar)
root.mainloop()
The code defines functions new_file
, open_file
, and exit_app
. These functions are linked to the menu items via the command
argument. Clicking “New” or “Open” will now trigger the respective function; “Exit” will close the application. Remember to replace the placeholder print statements with your desired functionality. For instance, you might link “Open” to a file dialog.
3. Advanced Menubar Techniques (Optional)
To create more complex and user-friendly applications, consider these advanced techniques:
- Submenus: Create nested menus for better organization.
- Checkbutton Menu Items: Allow users to toggle options on or off.
- Radiobutton Menu Items: Provide mutually exclusive choices.
- Keyboard Shortcuts: Assign keyboard shortcuts to menu items for faster access (using the
underline
andaccelerator
options inadd_command
). - Event Handling: Use more sophisticated event handling techniques to manage user interactions.
Explore Tkinter’s documentation for detailed information on these advanced features.