in reply to Really disable a button in Tk
#!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11148771 use warnings; 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); } sub normal { for (keys %btns){ $btns{$_}->configure(-state => 'normal'); } } sub alpha{ print "alpha\n"; # sleep 4; $mw->after( 4_000 => \&normal ); } sub beta{ print "beta\n"; # sleep 4; $mw->after( 4_000 => \&normal ); } sub gamma{ print "gamma\n"; # sleep 4; $mw->after( 4_000 => \&normal ); }
|
|---|