use strict;
use warnings;
use Tk;

my $mw = MainWindow->new(-background => 'white');
$mw -> title('  Test für Scale  ');

# zwei uebereinanderliegende Frames einrichten
my $f1 = $mw->Frame()->pack(-expand => 1,
                            -fill  => 'x');
my $f2 = $mw->Frame(-relief => "ridge")
                    ->pack(-pady => 10);

# der untere Rahmen enthaelt ein 
# Canvas-Widget zur Anzeige der Farbe
# und eine Textanzeige im Label-Widget
my $status = 10;
my $label = $mw->Label(-relief       => 'ridge',
                       -textvariable => \$status)
                 ->pack(-expand => 1,
                         -fill  => 'x');
# Farbfeldanzeige
my $show = $f2->Canvas(-background => "Black")->pack();

# im oberen Rahmen befinden sich drei Scale-Widgets 
# zur Farbwahl und der Exit-Button
# Die Anfangswerte sind jeweils 0 --> Schwarz
my $s_red   = $f1->Scale(-from => 0, -to => 255,
                         -orient  => "vertical",
                         -label   => "Rot",
                         -command => \&redraw);
$s_red->set(0);          # Anfangswert setzen
                         
my $s_green = $f1->Scale(-from => 0, -to => 255,
                         -orient  => "vertical",
                         -label   => "Grün",
                         -command => \&redraw);
$s_green->set(0);
                          
my $s_blue  = $f1->Scale(-from => 0, -to => 255,
                         -orient  => "vertical",
                         -label   => "Blau",
                         -command => \&redraw);
$s_blue->set(0);

# und alle drei packen
$s_red->pack(-side => "left");
$s_green->pack(-side => "left");
$s_blue->pack(-side => "left");

# der unvermeidliche Exit-Button
my $x = $f1->Button(-text    => "Aufhören!",
                    -command => sub { exit 0 })
               ->pack(-side   => 'right',
                      -expand => 1,
                      -fill   => 'both');

MainLoop;

# Funktion zum Aendern der Farbe
sub redraw 
  {
  # Wert ausgeben
  $status = sprintf("#%02x%02x%02x",
                    $s_red->get(),
                    $s_green->get(),
                    $s_blue->get());
  $show->configure(-background => $status);
  }
