Python Tkinter Menu
The Menu widget is used to create various types of menus (top level, pull down, and pop up) in the python application.
The top-level menus are the one which is displayed just under the title bar of the parent window. We need to create a new instance of the Menu widget and add various commands to it by using the add() method.
The syntax to use the Menu widget is given below.
Syntax
- w = Menu(top, options)
A list of possible options is given below.
SN | Option | Description |
---|---|---|
1 | activebackground | The background color of the widget when the widget is under the focus. |
2 | activeborderwidth | The width of the border of the widget when it is under the mouse. The default is 1 pixel. |
3 | activeforeground | The font color of the widget when the widget has the focus. |
4 | bg | The background color of the widget. |
5 | bd | The border width of the widget. |
6 | cursor | The mouse pointer is changed to the cursor type when it hovers the widget. The cursor type can be set to arrow or dot. |
7 | disabledforeground | The font color of the widget when it is disabled. |
8 | font | The font type of the text of the widget. |
9 | fg | The foreground color of the widget. |
10 | postcommand | The postcommand can be set to any of the function which is called when the mourse hovers the menu. |
11 | relief | The type of the border of the widget. The default type is RAISED. |
12 | image | It is used to display an image on the menu. |
13 | selectcolor | The color used to display the checkbutton or radiobutton when they are selected. |
14 | tearoff | By default, the choices in the menu start taking place from position 1. If we set the tearoff = 1, then it will start taking place from 0th position. |
15 | title | Set this option to the title of the window if you want to change the title of the window. |
Methods
The Menu widget contains the following methods.
SN | Option | Description |
---|---|---|
1 | add_command(options) | It is used to add the Menu items to the menu. |
2 | add_radiobutton(options) | This method adds the radiobutton to the menu. |
3 | add_checkbutton(options) | This method is used to add the checkbuttons to the menu. |
4 | add_cascade(options) | It is used to create a hierarchical menu to the parent menu by associating the given menu to the parent menu. |
5 | add_seperator() | It is used to add the seperator line to the menu. |
6 | add(type, options) | It is used to add the specific menu item to the menu. |
7 | delete(startindex, endindex) | It is used to delete the menu items exist in the specified range. |
8 | entryconfig(index, options) | It is used to configure a menu item identified by the given index. |
9 | index(item) | It is used to get the index of the specified menu item. |
10 | insert_seperator(index) | It is used to insert a seperator at the specified index. |
11 | invoke(index) | It is used to invoke the associated with the choice given at the specified index. |
12 | type(index) | It is used to get the type of the choice specified by the index. |
Creating a top level menu
A top-level menu can be created by instantiating the Menu widget and adding the menu items to the menu.
Example 1
- # !/usr/bin/python3
- from tkinter import *
- top = Tk()
- def hello():
- print(“hello!”)
- # create a toplevel menu
- menubar = Menu(root)
- menubar.add_command(label=“Hello!”, command=hello)
- menubar.add_command(label=“Quit!”, command=top.quit)
- # display the menu
- top.config(menu=menubar)
- top.mainloop()
Output:
Clicking the hello Menubutton will print the hello on the console while clicking the Quit Menubutton will make an exit from the python application.
Example 2
- from tkinter import Toplevel, Button, Tk, Menu
- top = Tk()
- menubar = Menu(top)
- file = Menu(menubar, tearoff=0)
- file.add_command(label=“New”)
- file.add_command(label=“Open”)
- file.add_command(label=“Save”)
- file.add_command(label=“Save as…”)
- file.add_command(label=“Close”)
- file.add_separator()
- file.add_command(label=“Exit”, command=top.quit)
- menubar.add_cascade(label=“File”, menu=file)
- edit = Menu(menubar, tearoff=0)
- edit.add_command(label=“Undo”)
- edit.add_separator()
- edit.add_command(label=“Cut”)
- edit.add_command(label=“Copy”)
- edit.add_command(label=“Paste”)
- edit.add_command(label=“Delete”)
- edit.add_command(label=“Select All”)
- menubar.add_cascade(label=“Edit”, menu=edit)
- help = Menu(menubar, tearoff=0)
- help.add_command(label=“About”)
- menubar.add_cascade(label=“Help”, menu=help)
- top.config(menu=menubar)
- top.mainloop()
Output: