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; }
In reply to Really disable a button in Tk by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |