Create a menubutton with the
Menubutton
method. For example:
The$mainwindow->Menubutton(-text => "File", -menuitems => [ [ 'command' => "New", "-command" => \&newfile, "-underline" => 0 ], [ 'command' => "Open", "-command" => \&openfile, "-underline" => 0 ], "-", [ 'command' => "Save", "-command" => \&savefile, "-underline" => 0 ], [ 'command' => "SaveAs", "-command" => \&saveasfile, "-underline" => 4 ] ] );
-menuitems
option takes a list of lists describing the menu items. For each menu item, an embedded anonymous list describes the type of menu item, the label to use, and the action to take when it is selected along with any other options desired to configure the menu item. In this example, each of the menu items is the
'command'
type, and we use the
-command
option for each item to point to the callback to execute when the menu item is selected. We also use the
-underline
option to enable the user to select a menu item using keystrokes. (The
\[
quotedbl
]-"
represents a separator between menu items.)
In addition to
'command'
, other types of menus are:
'cascade'
Embeds a cascade menu.
'checkbutton'
Treats the menu item as a checkbutton.
'command'
Executes a callback.
'radiobutton'
Treats the menu item as a radiobutton.
You can configure both the menu itself and the individual menu items. The configuration options that apply to
Menubutton
are:
-activebackground
,
-activeforeground
,
-anchor
,
-background
,
-bg
,
-bitmap
,
-borderwidth
,
-bw
,
-cursor
,
-disabledforeground
,
-font
,
-foreground
,
-fg
,
-height
,
-highlightbackground
,
-highlightcolor
,
-highlightthickness
,
-image
,
-justify
,
-padx
,
-pady
,
-relief
,
-state
,
-takefocus
,
-underline
,
-width
, and
-wraplength
.
Other
Menubutton
options are:
-indicatoron =>
boolean
-menu =>
$menu
-menuitems =>
list
Specifies items to create in the menu as a list of lists. See the description at the beginning of this section.
-tearoff =>
boolean
Whether or not to allow the menu to be "torn off." Default is 1.
-text =>
string
-textvariable =>
\$variable
Points to the variable containing text to be displayed in the menubutton. Button text will change as
$variable
does.
In addition to the menu itself, each individual menu item can be configured. The widget configuration options that apply to menu items are:
-activebackground
,
-background
,
-bg
,
-bitmap
,
-font
,
-foreground
,
-fg
,
-image
,
-state
, and
-underline
. Other options are:
-accelerator
Displays an accelerator key sequence for the menu item. The key sequence must be independently defined with a
bind
.
-command =>
callback
Pointer to a function that will be called when the menu item is selected.
-indicatoron =>
boolean
-label =>
string
-menu =>
$submenu
-offvalue =>
newvalue
For a checkbutton, specifies the value used when the checkbutton is "off."
-onvalue =>
newvalue
For a checkbutton, specifies the value used when the checkbutton is "on."
-selectcolor =>
color
For a checkbutton or radiobutton, color of the indicator when "on."
-selectimage =>
imgptr
For a checkbutton or radiobutton, defines the image to be displayed instead of text when the radiobutton is "on". Ignored if
-image
is not used.
-value =>
value
For a radiobutton, sets
$variable
to the specified value when the radiobutton is selected (default is 1).
-variable =>
\$variable
Associates the value of the menu item to the specified variable.
In addition to
configure
and
cget
, the following methods are defined for Menubutton widgets:
AddItems
Adds menu items to the end of the menu. The arguments to
AddItems
are lists configuring each menu item, similar to the lists defined with the
-menuitem
option.
$menubutton->AddItems(["command" => "Print", "-command" => \&printscreen ], ["command" => "Exit", "-command" => \&exitclean ]);
command
Adds a command item to the end of the menu. The above example could have read:
$menubutton->command(-label => "Print", -command => \&printscreen); $menubutton->command(-label => "Exit", -command => \&exitclean);
checkbutton
Adds a checkbutton item to the end of the menu.
$menubutton->checkbutton(-label => "Show Toolbar", [-variable => \$toolbar");
radiobutton
Adds a radiobutton item to the end of the menu.
$menubutton->radiobutton(-label => "Red", -variable => \$color"); $menubutton->radiobutton(-label => "Blue", -variable => \$color");
separator
cascade
menu
entrycget
Gets information on a menu entry given an index and option to query.
entryconfigure