in reply to Re: Re: changing the focusing-order in Tk
in thread changing the focusing-order in Tk

okay, here's a script illustrating the problem:
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 { for (my $i = 0; defined($_[$i+1]); $i++) { ${$_[$i]}->bind('<Return>' , \${$_[$i+1]}->focus ); print ${$_[$i]}, "\n"; } ${$_[0]}->focus; # BTW: $foo->focus() wont work here.... } MainLoop();

i'm starting to think this is a scoping problem - but then aain, this script doesn't throw ANY warnings.
dazzled,

-schweini

Replies are listed 'Best First'.
Re:^4 changing the focusing-order in Tk
by hiseldl (Priest) on Sep 28, 2002 at 22:34 UTC
    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!

      okay, this one works - thanks a million!

      but what the heck are you doing there? giving of a list as a coderef, and perl thinks the first element is a sub? yikes!
      thanks again,
      -schweini