In the following SSCCE, the binding for "<Return>" is not calling the associated subroutine "Play" when the ENTER key is pressed for the selected Listbox entry.
Note that "<ButtonPress-3>" works fine when the selected Listbox entry is right-clicked.
What am I missing here? TIA
#!/usr/bin/perl
use strict;
use warnings;
use Tk;
my $mw = MainWindow->new();
$mw->geometry("300x100+20+20");
$mw->bind('<Escape> ' => sub{exit;});
$mw->configure(-title => 'Listbox "Return" Test');
my $lb = $mw->Scrolled(
"Listbox",
-scrollbars => 'oe',
-selectmode => "single",
-height => 15,
-width => 35,
)->pack();
$lb->insert('end', 'Name1');
$lb->insert('end', 'Name2');
$lb->insert('end', 'Name3');
$lb->selectionSet(1);
$lb->bind('<ButtonPress-1>' => sub { Info($lb->get($lb->curselection()
+)) });
$lb->bind('<ButtonPress-3>' => sub { Play($lb->get($lb->curselection()
+)) });
###################################################
# *** Problem ***
# "Return" binding does not call "Play" subroutine
# when ENTER key is pressed.
###################################################
$lb->bind('<Return>' => sub { Play($lb->get($lb->curselection())) });
MainLoop();
sub Info {
my $name = shift;
print "\n(Info)-Name: $name\n";
return;
}
sub Play {
my $name = shift;
print "(Play)-Name: $name\n";
return;
}
"It's not how hard you work, it's how much you get done."