#!/Perl/bin/perl use strict; use warnings; use Tk; use Tk::Scale; use Tk::Balloon; use Tk::NumEntryPlain; use Tk::EntryCheck; use Tk::NumEntry; my $mw = Tk::MainWindow->new(-width=>150,-height=>150,); $mw->gridPropagate(0); $mw->packPropagate(0); my $wert = 10; my $s = $mw->Scale( -variable => \$wert, -from => 0, -to => 100, -length => 50, -showvalue => 0, -sliderlength => 6, -sliderrelief => 'raised', -orient => 'horizontal', ); my $e = $mw->NumEntry( -minvalue => 0, -maxvalue => 100, -width => 5, -bell => 1, -text => $wert, ); my $l = $mw->Label( -textvariable => \$wert, ); # ------------ configure $e->configure( -validate => 'key', -vcmd => sub{ if( main::setScale($e, $s) ){ return 1; }else{ return 0; } }, ); $s->configure( -command => sub{ main::setEntry($e, $s, \$wert); }, ); $e->pack(); $s->pack(); $l->pack(); Tk::MainLoop; sub setScale { my ($e, $s) = @_; # ist Wert ist auf jeden Fall numerisch # $wert ist bereits durch -variable gesetzt $e->configure(-text=>$wert); return 1; } # /setScale sub setEntry { my ($e, $s, $wert_ref) = @_; # $zw kann "" sein my $zw = $e->get(); if( $zw =~ m/.{0,0}/ ){ $zw = 0; } $$wert_ref = $zw; $s->set($zw); } # /setScale