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


in reply to Change Color on Button Release

G'day PilotinControl,

I don't know if there's some confusion between a mouse button and a Button widget; however, what you appear to be asking for is already the default behaviour.

The change in the default colours is only different shades of grey and perhaps not all that obvious. Run the following code to see what's happening more clearly.

#!/usr/bin/env perl use strict; use warnings; use Tk; my $mw = MainWindow::->new(); my %colours = qw{ -background red -foreground yellow -activebackground yellow -activeforeground red }; my $button = $mw->Button(-text => 'Test', %colours)->pack(); MainLoop;

Having done that, if what you're seeing is not what you want, please describe what different behaviour you're looking for.

— Ken

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

    Ken...The code worked as described, however, the button in my code once released does not go back to its original color. In using the configure option to change the color does not work either. I must add that this is a Virtual Event. So I'm at a loss at the moment. Thanks for the help.

    #!/usr/bin/perl use warnings; use strict; use Tk; my $mw = new MainWindow; my %colours = qw{ -background grey -foreground black -activebackground red -activeforeground black }; my $label = $mw -> Label(-text=>"Hello World") -> pack(); my $button = $mw -> Button(-text => "Quit", %colours); $button->bind('<ButtonPress-1>' => \&myexit); $button->bind('<ButtonRelease-1>' => \&myexit2); $button->pack; $button->eventGenerate('<ButtonPress-1>'); $button->eventGenerate('<ButtonRelease-1>'); #$mw->repeat(10000 => \&doit); $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 { print time."\n"; }