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