#!/usr/bin/perl use warnings; use strict; use Tk::Trace; use Tk; my $mw = MainWindow->new; $mw->fontCreate('medium', -family=>'courier', -weight=>'bold', -size=>int(-14*14/10)); my $c = $mw->Canvas(-width => 400,-height => 210,-bd => 2,-relief => 'sunken',-background => 'black',)->pack; $c->createImage(150, 150, -image => $mw->Photo(-file => &update_meter, -format => 'gif'), -anchor => 'ne', -tags => ['gif']); my $v = 0; $mw->traceVariable(\$v, 'w' => [\&update_meter]); $mw->bind('' => sub{ $v += 1 }); my $text = $c->createText( 100,50, -text => $v,-font => 'medium', -fill => 'yellow', -anchor => 's', -tags => ['text'] ); $c->raise('text'); MainLoop; sub update_meter { my($index, $value) = @_; my ($x, $y) = $mw->pointerxy; my $value_text = "$value x=$x y=$y"; $c->itemconfigure($text,-text => $value_text); my $file; my $file1 = '/home/pasha/perl/tk/but1.gif'; my $file2 = '/home/pasha/perl/tk/but2.gif'; if (($x > 103 && $x < 153) && ($y > 205 && $y < 226)){ #we are over button $file = $file2; } else { $file = $file1; } }