When a button is in the disabled state it does not respond -as advertised, but once the button is enabled again it responds to all presses that it received when it was in the disabled state. I can't figure out how to eliminate this behavior. I do not want the button to respond to anything that happened when it was disabled -ever. Can anyone help me with this? Here's a program to demonstrates the problem, it disables all buttons for 4 seconds whenever one is pressed. Thanks
use Tk;
my $mw = MainWindow->new;
my %btns;
for (qw(alpha beta gamma)){
my $name = $_;
$btns{$_} = $mw->Button(
-text => $_,
-command => sub{foo($name)},
)->pack;
}
MainLoop;
sub foo{
my $name = shift;
for (keys %btns){
$btns{$_}->configure(-state => 'disabled');
}
my %dispatch =(
alpha => \&alpha,
beta => \&beta,
gamma => \&gamma,
);
$dispatch{$name}->($name);
for (keys %btns){
$btns{$_}->configure(-state => 'normal');
}
}
sub alpha{
print "alpha\n";
sleep 4;
}
sub beta{
print "beta\n";
sleep 4;
}
sub gamma{
print "gamma\n";
sleep 4;
}