Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re^2: Perl Tk Button Disabled

by PilotinControl (Pilgrim)
on Oct 25, 2022 at 00:14 UTC ( [id://11147661]=note: print w/replies, xml ) Need Help??


in reply to Re: Perl Tk Button Disabled
in thread Perl Tk Button Disabled

I think we are getting close. Below is the sensor code that sends data to the Perl script. The perl script changes the state and color of the button. However my other button code still changes the color of the button whether the sensor is tripped or not.

if ($data =~ /(?<![\w-])ON(?![\w-])/i) { $btn1->configure(-background => "gray", -foreground => "black"); $btn1->configure(-state => "disabled"); print "ON\n"; } if ($data =~ /(?<![\w-])OFF(?![\w-])/i) { $btn1->configure(-background => "green", -foreground => "black"); $btn1->configure(-state => "normal"); print "OFF\n"; }

And this code below still changes the color of $btn1 whether it is disabled or not. It's fine to change the color when it's enabled. It's NOT fine to change the color when it's disabled.

sub chg_btn { $btn1->configure(-background => "green", -foreground => "black"); }

Replies are listed 'Best First'.
Re^3: Perl Tk Button Disabled
by GrandFather (Saint) on Oct 25, 2022 at 00:36 UTC

    So you should now have all almost the pieces you need to work out how to manage not changing button color in chg_btn when it ought not be changed. The missing part is passing the current sensor state into chg_btn in some fashion. Where you set up button call backs you can:

    my %context; ... $button->bind('<ButtonRelease-1>' => sub{chg_btn(\%context, @_});

    and something similar wherever you set up the sensor handling callback/sub. You can then

    sub sensorHandler { my ($context, ...) @_; $context->{sensorOn} = $data !~ /(?<![\w-])OFF(?![\w-])/i; ... }

    and in your button handler you can

    sub chg_btn { my ($context, ...) = @_; $btn1->configure(-background => "green", -foreground => "black") if !$context->{sensorOn}; }
    Optimising for fewest key strokes only makes sense transmitting to Pluto or beyond

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11147661]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (3)
As of 2024-07-25 19:22 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuli‥ 🛈The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.