This is an unofficial mirror of Tkinter reference documentation (based on Python 2.7 and Tk 8.5) created by the late John Shipman.
It was last updated in 2013 and is unmaintained. [More info]
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.