http://www.perlmonks.org?node_id=11147023


in reply to Change Color on Button Release

While this appears to work, I'm not sure it's the "right" way.
In fact, I'm tempted to say that having your program press buttons by itself is bad UI. It takes control away from the user and can surprise and irritate him.

#!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11147002 use warnings; use Tk; my $mw = new MainWindow; my $label = $mw -> Label(-text=>"Hello World") -> pack(); my $button = $mw -> Button(-activebackground => 'red', -activeforegrou +nd => 'black', -text => "Quit" ); $button->bind('<ButtonPress-1>' => \&myexit); $button->bind('<ButtonRelease-1>' => \&myexit2); $button->pack; $button->eventGenerate('<ButtonPress-1>'); $button->eventGenerate('<ButtonRelease-1>'); $mw->after(5000 => \&doit); $mw->after(10000 => \&doit2); sub doit { $button->focus; $button->eventGenerate('<ButtonPress-1>'); } sub doit2 { $button->focus; $button->eventGenerate('<ButtonRelease-1>'); } MainLoop; sub myexit { print time."\n"; } sub myexit2 { $button->configure(-background => "gray", -foreground => "black"); $button->eventGenerate('<Leave>'); # NOTE print time." 2\n"; }

Replies are listed 'Best First'.
Re^2: Change Color on Button Release
by PilotinControl (Pilgrim) on Sep 20, 2022 at 22:28 UTC

    This is part of an automated script and your solution works perfectly! I guess I was missing the <leave> portion of the code which was not in the Oreilly book. Thanks again!