You want to create a window that has a menu bar at the top.
Use the Tk Menubutton and Frame widgets:
use Tk; $main = MainWindow->new(); # Create a horizontal space at the top of the window for the # menu to live in. $menubar = $main->Frame(-relief => "raised", -borderwidth => 2) ->pack (-anchor => "nw", -fill => "x"); # Create a button labeled "File" that brings up a menu $file_menu = $menubar->Menubutton(-text => "File", -underline => 1) ->pack (-side => "left" ); # Create entries in the "File" menu $file_menu->command(-label => "Print", -command => \&Print);
This is considerably easier if you use the
$file_menu = $menubar->Menubutton(-text => "File", -underline => 1, -menuitems => [ [ Button => "Print",-command => \&Print ], [ Button => "Save",-command => \&Save ] ]) ->pack(-side => "left");
Menus in applications can be viewed as four separate components working together: Frames, Menubuttons, Menus, and Menu Entries. The Frame is the horizontal bar at the top of the window that the menu resides in (the menubar). Inside the Frame are a set of Menubuttons, corresponding to Menus: File, Edit, Format, Buffers, and so on. When the user clicks on a Menubutton, the Menubutton brings up the corresponding Menu, a vertically arranged list of Menu Entries.
Options on a Menu are labels (Open, for example) or separators (horizontal lines dividing one set of entries from another in a single menu).
The command entry, like Print ...