Especially under MacOS, it is sometimes desirable to create menus that are shown as part of the top-level window. To do this, follow these steps.
Using any widget
, obtain the top-level window by using the
W
method.
W
.winfo_toplevel()
Create a Menu
widget, using the
top-level window as the first argument.
Items added to this Menu
widget
will be displayed across the top of the application.
Here is a brief example. Assume that self
is the application instance, an instance of a class that
inherits from Frame
. This code would
create a top-level menu choice named “ ” with one choice named
“ ” that calls
a handler named self.__aboutHandler
:
top = self.winfo_toplevel() self.menuBar = tk.Menu(top) top['menu'] = self.menuBar self.subMenu = tk.Menu(self.menuBar) self.menuBar.add_cascade(label='Help', menu=self.subMenu) self.subMenu.add_command(label='About', command=self.__aboutHandler)
There is some variation in behavior depending on your platform.
Under Windows or Unix systems, the top-level menu choices appear at the top of your application's main window.
Under MacOS X, the top-level menu choices appear at the top of the screen when the application is active, right where Mac users expect to see them.
You must use the .add_cascade()
method
for all the items you want on the top menu bar.
Calls to .add_checkbutton()
, .add_command()
, or .add_radiobutton()
will be ignored.