#!/usr/bin/perl -w use utf8; use Tk; require Tk::LabFrame; our ($degreeClr1, $degreeClr2, $degreeClr3, $degreeClr4, $degreeClr5) = ("magenta", "red", "blue", "green", "darkred"); my $mw = MainWindow -> new(); $mw -> title($0); $mw -> geometry("1100x150+0+0"); $mw -> minsize(1100, 150); # MAIN FRAME $frame01 = $mw -> Frame -> pack(-fill => 'both', -expand => 1, -padx => 4, -pady => 4); $frameParam1 = $frame01 -> LabFrame(-label => "Settings", -labelside => "acrosstop") -> pack(-fill => 'x', -expand => 1, -padx => 10, -anchor => 'n'); $frameParam1_0 = $frameParam1 -> Frame -> pack(-fill => 'x', -expand => 1); $frameParam1_0 -> Label(-text => "") -> pack(-fill => 'x', -expand => 1, -side => 'left'); # FRAME COLORS $frameParam1_3 = $frameParam1 -> Frame -> pack(-fill => 'x', -expand => 1); $frameParam1_3 -> Label(-text => "Colors:") -> pack(-side => 'left'); for (my $i = 1; $i <= 5; $i++) { ${"frameParam1_3_$i"} = $frameParam1_3 -> Frame -> pack(-padx => 5, -side => 'left'); ${"frameParam1_3_$i"} -> Label(-text => "$i. degree") -> pack(-side => 'left'); ${"clrButton$i"} = ${"frameParam1_3_$i"} -> Button(-text => "CLR", -cursor => 'hand2', -command => sub{&clrChooser("Choose color for $i degree!", ${"degreeClr$i"}, ${"clrCanvas$i"}, ${"clrShow$i"}, ${"clrButton$i"}, \${"degreeClr$i"})}) -> pack(-side => 'left'); ${"clrCanvas$i"} = ${"frameParam1_3_$i"} -> Canvas(-background => "black", -width => 20, -height => 20, -state => 'disabled') -> pack(-side => 'left'); ${"clrShow$i"} = ${"clrCanvas$i"} -> createRectangle(20, 20, 4, 4, -fill => ${"degreeClr$i"}, -outline => 'white', -width => '2'); ${"frameParam1_3_$i"} -> Button(-text => 'CHK', -command => sub{print "degreeClr$i: " . ${"degreeClr$i"} . "\n"})-> pack(-side => 'left'); print "degreeClr$i: " . ${"degreeClr$i"} . "\n"; } MainLoop; sub clrChooser { my ($title, $initClr, $clrCanvas, $clrCanvasItem, $clrButton, $initClrRef) = @_; print "title: $title\ninitClr: $initClr\nclrCanvas: $clrCanvas\ninitClrRef: $initClrRef\n"; my $color = $mw -> chooseColor(-title => $title, -initialcolor => $initClr); if ($color) { $$clrCanvas -> itemconfigure(${$clrCanvasItem}, -fill => $color); ${$initClrRef} = $color; $clrButton -> focus; } }