Binding to the up and down arrow keys is somewhat problematic because they are already used for list box navigation. However using 'x' and 'e' for the down and up keys you can reorder the list as follows:
#!usr/bin/perl use strict; use warnings; use Tk; my $mw = MainWindow->new(); my $lb = $mw->Scrolled("Listbox", -scrollbars => 'e',)->pack( -side => 'left', -fill => 'y' ); for my $key ("first", "second", "third", "fourth") { $lb->insert('end', $key); } $lb->activate(0); $lb->selectionSet(0); $lb->focus(); $lb->bind('<x>', sub {down($lb, @_)}); $mw->bind('<e>', sub {up($lb, @_)}); MainLoop; sub down { my ($lb) = @_; my @selItems = $lb->curselection(); return if 1 != @selItems || $selItems[0] == $lb->size(); my $item = $lb->get($selItems[0]); $lb->delete($selItems[0]); $lb->insert($selItems[0] + 1, $item); $lb->selectionSet($selItems[0] + 1); } sub up { my ($lb) = @_; my @selItems = $lb->curselection(); return if 1 != @selItems || $selItems[0] == 1; my $item = $lb->get($selItems[0]); $lb->delete($selItems[0]); $lb->insert($selItems[0] - 1, $item); $lb->selectionSet($selItems[0] - 1); }
In reply to Re: How to move up/down the row element in a ListBox/Mlistbox
by GrandFather
in thread How to move up/down the row element in a ListBox/Mlistbox
by ghosh123
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |