use strict; use warnings; use Tk; my $cfg; my $font_colour; my $wd = MainWindow->new(); $wd->Label( -text => 'Color', -justify => 'right', )->grid( -column => 0, -row => 4, -pady => 20, -padx => 20, -sticky => 'e' ); my $colour_button = $wd->Button( -width => 6, -command => sub { $font_colour = colour_picker() }, )->grid( -column => 2, -row => 4, -pady => 20, -padx => 20, -sticky => 'e' ); if ($font_colour) { $colour_button->configure( -background => $font_colour, -activebackground => $font_colour ); } MainLoop; sub colour_picker { my $colour = $wd->chooseColor( -title => 'Color Picker', -initialcolor => '#000000' ); $colour ? print "Colour chosen: " . $colour . "\n" : return; $colour_button->configure( -background => $colour, -activebackground => $colour ); return $colour; }