Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Re: Tab Order for Widgets in HList

by Anonymous Monk
on Oct 19, 2011 at 13:30 UTC ( #932400=note: print w/replies, xml ) Need Help??

in reply to Tab Order for Widgets in HList

Here is a stupid way to do it :)
#!/usr/bin/perl -- use strict; use warnings; use Tk; use Tk::HList; my $mw = MainWindow->new(); my $hlist = $mw->HList( -header => 0, -columns => 1 )->pack( qw/-expan +d 1 -fill both /); $hlist->add(0); $hlist->itemCreate(0, 0, -itemtype => 'window', -widget => $hlist->Ent +ry(-text => "Text0") ); $hlist->add(1); $hlist->itemCreate(1, 0, -itemtype => 'window', -widget => $hlist->Ent +ry(-text => "Text1") ); $hlist->add(2); $hlist->itemCreate(2, 0, -itemtype => 'window', -widget => $hlist->Ent +ry(-text => "Text2") ); $mw -> bind('all','<Tab>', sub { no warnings 'uninitialized'; $hlist->focus; my $origSel = $hlist->info('anchor'); $hlist->UpDown('next'); my $newSel = $hlist->info('anchor'); if( ( $origSel and $newSel ) and ( $origSel == $newSel ) ){ $hlist->selectionClear; $hlist->anchorClear; $hlist->UpDown('next'); # go back to zero } Tk::break(); }); MainLoop; __END__

Replies are listed 'Best First'.
Re^2: Tab Order for Widgets in HList
by Anonymous Monk on Oct 19, 2011 at 13:31 UTC
    And the smart way
    $mw -> bind('all','<Tab>', sub { $Tk::event->W ->focusPrev; Tk::break(); } ); $mw -> bind('all','<Shift-Tab>', sub { $Tk::event->W ->focusNext; Tk::break(); } );
      Very nice! But, for me, Shift-Tab does not work, I have to specify Shift-ISO_Left_Tab :-(
        Checking the source for Tk::MainWindow reveals that it uses the virtual <<LeftTab>>, so this should work for all, and its even simpler
        $mw->bind('all','<Tab>','focusPrev'); $mw->bind('all','<<LeftTab>>','focusNext');

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://932400]
[choroba]: when you're waiting for something, you sleep for $x, then $x * 2, then $x * 2 * 2, etc. up to a max or timeout
[erix]: right. yeah, sounds useful
[choroba]: it's handy when most of the times you get the response back almost immediately, but in rare cases, it can take longer time
[choroba]: in this particular case, we're fetching messages from Kafka

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (7)
As of 2018-04-19 15:09 GMT
Find Nodes?
    Voting Booth?