MenuBar
__init__(
self,
master,
toplevel,
options)
What is it?
The MenuBar object displays a menu at the top of the screen, with each menu option leading to a submenu.

How do I make one?
Create a MenuBar object like this:
from guizero import App, MenuBar
def file_function():
print("File option")
def edit_function():
print("Edit option")
app = App()
menubar = MenuBar(app,
toplevel=["File", "Edit"],
options=[
[ ["File option 1", file_function], ["File option 2", file_function] ],
[ ["Edit option 1", edit_function], ["Edit option 2", edit_function] ]
])
app.display()
Starting parameters
When you create a MenuBar object you must specify all of the parameters.
| Parameter | Takes | Default | Compulsory | Description |
|---|---|---|---|---|
| master | App | - | Yes | The container to which this widget belongs |
| toplevel | list | - | Yes | A list of top level menu items |
| options | 3D list | - | Yes | A list of submenus, with each submenu being a list of options and each option being a text/command pair. See notes above for more details. |
The toplevel parameter should be a list of options you wish to display on the menu. In the example, the toplevel options are File and Edit:

The options parameter should be a 3D List containing lists of submenu items, which are themselves lists. The elements in the list correspond to the elements in the toplevel list, so the first list of submenu items provided in options will be the submenu for the first menu heading provided in toplevel and so on.
The menu item sub-sublists within options should contain pairs consisting of the text to display on the menu and the function to call when that option is selected. In this example, the text "File option 1" is displayed and the function file_function is called if this option is clicked on.
["File option 1", file_function]
The MenuBar is never displayed on a grid so there are no grid or alignment parameters.
Methods
You can call the following methods on an MenuBar object.
| Method | Takes | Returns | Description |
|---|---|---|---|
| after(time, command, args=None) | time (int), command (function name), args (list of arguments) | - | Schedules a single call to command after time milliseconds. (To repeatedly call the same command, use repeat()) |
| cancel(command) | command (function name) | - | Cancels a scheduled call to command |
| destroy() | - | - | Destroys the widget |
| focus() | - | - | Gives focus to the widget (e.g. focusing a TextBox so that the user can type inside it) |
| repeat(time, command, args=None) | time (int), command (function name), args (list of arguments) | - | Repeats command every time milliseconds. This is useful for scheduling a function to be regularly called, for example updating a value read from a sensor. |
Properties
You can set and get the following properties:
| Method | Data type | Description |
|---|---|---|
| master | App | The App object to which this MenuBar belongs |
| tk | tkinter.Menu | The internal tkinter object, see Using tkinter |