You just need to use -exportselection=>0; A simple example
#!/usr/bin/perl
use warnings;
use strict;
use Tk;
my $mw = MainWindow->new();
my $f = $mw->Frame(-border => 1)
->pack(-side => "left", -fill => "both");
my $envs_list;
$envs_list = $f->Scrolled("Listbox", -scrollbars=>"e",
-exportselection => 0,
-selectmode=>"extended")->pack(-fill => 'both');
$envs_list->insert("end", "abcda");
$envs_list->insert("end", "abcdb");
$envs_list->insert("end", "abcdc");
$envs_list->insert("end", "abcdd");
my $list;
$list = $f->Scrolled("Listbox", -scrollbars=>"e",
-exportselection => 0,
-selectmode=>"extended")->pack(-fill => 'both');
$list->insert("end", "abcd1");
$list->insert("end", "abcd2");
$list->insert("end", "abcd3");
$list->insert("end", "abcd4");
$list->insert("end", "abcd5");
$mw->Button( -text => "Selections", -command =>
sub{
my $selected_env_list =
$envs_list->get( $envs_list->curselection );
my $selected_list =
$list->get( $list->curselection );
print "selected-> $selected_env_list $selected_list\n";
} )->pack( -side => 'left' );
$mw->Button( -text => "Exit", -command => \&exit )->pack;
MainLoop;
| [reply] [d/l] |
use Tk;
my $mw = new MainWindow;
$mw->Listbox( -listvariable => $_, -exportselection => 0 )->pack
for [11..15], [21..25];
MainLoop;
A word spoken in Mind will reach its own level, in the objective world, by its own wei ght
| [reply] [d/l] |
Would you believe that I wanted to give the OP some experience sorting thru lousy long variable names? :-)
To be honest, it was early, and I just pasted the first example I came across, but now that I look closer, it does have alot of fluff in it. :-)
But in my defense, I had a simple non-complicated example like yours, BUT, the OP claimed unfamiliarity with pTk, so I wanted an example that was very elementary, showing each step in excruciating newbie detail....... the adding to the listboxes, and how to get both selections with a button(or command). Also, your for() syntax is clever, but not standard, and I would hate to have a new user thinking that was a good template for setting up listboxes. Here is how I would do a rewrite
#!/usr/bin/perl
use warnings;
use strict;
use Tk;
my $mw = MainWindow->new();
my $f = $mw->Frame( -border => 1 )->pack( -side => "left", -fill => "b
+oth" );
#just manipulate arrays to change lists
my @list1 = ( 'a' .. 'z' );
my @list2 = ( 1 .. 100 );
my $list1 = $f->Scrolled(
"Listbox",
-listvariable => \@list1,
-scrollbars => "osoe",
-exportselection => 0,
-selectmode => "extended"
)->pack( -fill => 'both' );
my $list2 = $f->Scrolled(
"Listbox",
-listvariable => \@list2,
-scrollbars => "osoe",
-exportselection => 0,
-selectmode => "extended"
)->pack( -fill => 'both' );
$mw->Button(
-text => "Selections",
-command => sub {
my $selected1 = $list1->get( $list1->curselection );
my $selected2 = $list2->get( $list2->curselection );
print "selected-> $selected1 $selected2\n";
}
)->pack( -side => 'left' );
$mw->Button( -text => "Exit", -command => sub { exit } )->pack;
MainLoop;
| [reply] [d/l] |