#!/usr/bin/perl use Gtk2; use strict; use Data::Dumper; Gtk2->init; my $window = Gtk2::Window->new('toplevel'); $window->signal_connect('delete_event', sub { exit }); my $button = Gtk2::Button->new('Click Here'); my @items = ( [ '/', undef, undef, undef, '' ], [ '/Item #1', undef, \&clicked, undef, '', ], [ '/Item #2', undef, \&clicked, undef, '', ], [ '/Item #3', undef, \&clicked, undef, '', ], [ '/Submenu/Submenu Item #1', undef, \&clicked, undef, '', ], [ '/Submenu/Submenu Item #2', undef, \&clicked, undef, '', ], [ '/Submenu/Submenu Item #3', undef, \&clicked, undef, '', ], ); my $factory = Gtk2::ItemFactory->new('Gtk2::Menu', '
', undef); $factory->create_items(@items); my $menu = $factory->get_widget('
'); $button->signal_connect('clicked', sub { $menu->popup(undef, undef, undef, undef, $button, undef) }); $window->add($button); $window->show_all; Gtk2->main; exit; sub clicked { my $menu_item = $_[2]; print "clicked on ".$menu_item->child->get_text."\n"; }