I have this loop. As it adds labels into a Pane, it binds <1> and <Double-1> to perform specific tasks.
my @items;
for my $text ( qw( one two three four five six seven eight nine ten )
+) {
my $label = $pane->Label( -text => $text,
-anchor => 'w',
-fg => '#000000',
-bg => '#C0C0C0',
-font => 'courier 20 normal',
)->pack(-fill => 'x', -expand => 1);
push @items, $label;
$label->bind('<Button-1>' => sub {
$_->configure( -bg => '#C0C0C0') for @items; #unhighlight e
+verything
$selectedtext = $text;
$label->configure( -bg=>'#CCE8FF'); #highlight this
} );
$label->bind('<Double-1>' => sub {
if (${$label->cget("-font")} eq 'courier 20 normal') {
$label->configure( -font => 'courier 20 bold', -fg
+=>'#0000FF');
} else {
$label->configure( -font => 'courier 20 normal', -
+fg=>"black");
}
}
);
}
My problem is that, I want to put that whole loop into a function because it will be performed by different parts of the script.
my @items;
InitializeList();
sub InitializeList {
undef @items;
for my $text ( qw( one two three four five six seven eight nine te
+n ) ) {
...
}
}
But doing so, those Bindings dont work anymore.
Moreso, I also want to isolate the bindings into separate subroutine on their own as well to compartmentalize everything for ease of maintenance:
sub BindButton1 {
}
sub BindDouble1 {
}
It appears I am having parameter passing problem.