Try this:
use Tk;
use strict;
use warnings;
my $win = MainWindow->new();
$win->Button(-text=>'Other Window',-command=>\&otherwindow)->pack;
sub otherwindow
{
my $otherwin = $win->Toplevel;
my $foo = $otherwin->Entry->pack;
my $bar = $otherwin->Entry->pack;
my $baz = $otherwin->Entry->pack;
&defineOrder($foo, $bar, $baz);
}
sub defineOrder
{
my $widget;
for (my $i=0; defined( $_[$i+1] ); $i++)
{
$_[$i]->bind('<Key-Return>', [\&focus, $_[$i+1]]);
}
# Uncomment this line if you want to wrap around
#$_[$#_]->bind('<Key-Return>', [\&focus, $_[0]]);
$_[0]->focus;
}
sub focus
{
my ($tk, $self) = @_;
$self->focus;
}
MainLoop();
This changes focus to the next widget using the return key. The focus does not wrap around, but you should be able to add an extra bind command to go from the last widget to the first widget using the example above.
--
hiseldl
What time is it? It's Camel Time!