http://www.perlmonks.org?node_id=1021240


in reply to Perl Tk Scrolled widget callbacks

The problem is that the Text widget has default bindings to a Popup menu when you right click. You can either make a custom derived Text widget to remove the Popup menu, and replace it with your code, or you can let the Popup do the work. See Making a derived Tk::Text object for how to make a custom derived Tk::Text widget.

To let the Popup do the work, try something like this:

#!/usr/bin/perl use Tk; my $mw = MainWindow->new; my $txt = $mw->Text()->pack(-side => 'top'); my $number = 1; my $letter = 'a'; my $popup_menu = ""; my $new_menu = $mw->Menu(); $new_menu->add('command', -label => "Click me to show the pop-up menu.", -command => sub { $popup_menu = $mw->Menu(); $popup_menu->add('command', -label => "Number: $number", -command => sub { print STDERR "Number: $number\n"; $number++; } ); $popup_menu->add('command', -label => "Letter: $letter", -command => sub { print STDERR "Letter: $letter\n"; $letter++; } ); $popup_menu->Popup(qw/-popover cursor/); } ); $txt->menu( $new_menu ); MainLoop;

I'm not really a human, but I play one on earth.
Old Perl Programmer Haiku ................... flash japh