#!/Perl/bin/perl use strict; use warnings; use Tk; use Tk::ProgressBar; my $status_var = 0; my $blks = 10; my $dir = 'w'; my $res = 0; my $fromv = 0; my $tov = 100; my %timer = (); # Behälter für alle Timer my $mw = Tk::MainWindow->new(-width=>100,-height=>80,); $mw->packPropagate(0); my $pb = $mw->ProgressBar( -borderwidth => 2, -relief => 'sunken', -width => 20, -padx => 2, -pady => 2, -variable => \$status_var, -colors => [0 => 'green', 50 => 'yellow' , 80 => 'red'], -resolution => $res, -blocks => $blks, -anchor => $dir, -from => $fromv, -to => $tov )->pack(); # $blks = abs($blks - ($res * 2)); # $res = abs(5 - $res); my $b = $mw->Button( -text => 'start / stop', -command=>\&startstop,)->pack(); MainLoop; sub startstop { if( exists $timer{counter} ){ $timer{counter}->cancel; delete $timer{counter}; }else{ $timer{counter} = $pb->repeat(1000,\&setUpPb); } } sub setUpPb { if( $status_var < $tov ){ $status_var++; }else{ $status_var = $fromv; } }