in reply to disable button

It usually is more complex than this, as to when you want the normal state returned, but here are the commands.
sub run { #disable $push $button->configure(-state=>'disabled'); #do something #enable $push $button->configure(-state=>'normal'); }

I'm not really a human, but I play one on earth Remember How Lucky You Are

Replies are listed 'Best First'.
Re^2: disable button
by honyok (Sexton) on Feb 05, 2009 at 15:25 UTC
    I've tried this, but I'm not sure how to pass $push to the subroutine; specifically in the same statement in which it is being defined. I'm new to local variable usage. -honyok
      Yeah, it can get tricky. One option is to create the button first, without a command, then after creation, configure it to contain a command, with it's name as a parameter. However, it is probably easiest to use the caller method. This will restore the button after 2 seconds.
      #!/usr/bin/perl use warnings; use strict; use Tk; my $mw = tkinit; my $push= $mw->Button(-text => "test ", -command =>[\&save_parms,$mw,'somedata'] )->pack(); MainLoop; sub save_parms { print "@_\n"; my $caller = $Tk::widget; #disable $push $caller->configure(-state=>'disabled'); #do something my $timer = $mw->after(2000,sub{ $caller->configure(-state=>'normal'); #enable $push }); }

      I'm not really a human, but I play one on earth Remember How Lucky You Are
        I'm not sure how to pass $push to the subroutine; specifically in the same statement in which it is being defined.

        The other alternative is to declare the variable first, before using it, then it will be available throughout the line:

        my $push; $push = $mw->Button( -text => "test ", -command => sub { #disable $push $push->configure(-state=>'disabled'); #do something #enable $push $push->configure(-state=>'normal'); }, )->pack();

        As long as you're not trying to use the value of the variable before it has been set, e.g. on the right-hand side of the assignment. But here, the variable is merely being bound, inside the anonymous subroutine.

        Between the mind which plans and the hands which build, there must be a mediator... and this mediator must be the heart.