#Here are some fake buttons using sub-canvas: my $scan1 = $rightframe-> Canvas(-width => 64, -height => 54, -highlightthickness => 0); my $scan2 = $rightframe-> Canvas(-width => 64, -height => 54, -highlightthickness => 0); my $scan3 = $rightframe-> Canvas(-width => 64, -height => 54, -highlightthickness => 0); &scan1start; MainLoop; sub reset { my @buttons = ($scan1,$scan2,$scan3); foreach (@buttons) { $_-> destroy; } #&scan1start; } sub scan1start { if ($numscan1 == 0) { $scan1-> form(-left => '187', -top => '319'); $scan1-> configure(-background => 'black'); $scan1-> Tk::bind('' => sub { .... etc .... etc .... etc } #### #!/usr/bin/perl use warnings; use Tk; use strict; my $mw = new MainWindow; $mw-> geometry('640x480'); $mw-> resizable( 0, 0 ); my $numscan1 = 0; my $numscan2 = 0; my $numscan3 = 0; my $leftframe = $mw-> Frame(); $leftframe->form(-left => '%0', -right => '%25', -bottom => '%99', -top => '%1'); my $resetb = $leftframe-> Button(-text => 'Reset', -command => \&reset )->form(-left => '%50', -top => '%50'); my $rightframe = $mw-> Frame(-relief => 'groove', -borderwidth => 1); $rightframe-> form(-left => $leftframe, -right => '%99', -bottom => '%99', -top => '%1'); my $maincanvas = $rightframe-> Canvas(-background => 'blue', -highlightthickness => 0); $maincanvas-> form(-left => '%1', -right => '%99', -bottom => '%99', -top => '%1'); #Here are some fake buttons using sub-canvas: #my $scan1 = $rightframe-> Canvas(-width => 64, -height => 54, -highlightthickness => 0); #my $scan2 = $rightframe-> Canvas(-width => 64, -height => 54, -highlightthickness => 0); #my $scan3 = $rightframe-> Canvas(-width => 64, -height => 54, -highlightthickness => 0); my $scan1; my $scan2; my $scan3; &scan1start; MainLoop; sub reset { my @buttons = ($scan1,$scan2,$scan3); foreach (@buttons) { $_-> destroy; } &scan1start; } sub scan1start { $scan1 = $rightframe-> Canvas(-width => 64, -height => 54, -highlightthickness => 0); $scan2 = $rightframe-> Canvas(-width => 64, -height => 54, -highlightthickness => 0); $scan3 = $rightframe-> Canvas(-width => 64, -height => 54, -highlightthickness => 0); if ($numscan1 == 0) { $scan1-> form(-left => '187', -top => '319'); $scan1-> configure(-background => 'black'); $scan1-> Tk::bind('' => sub { $numscan1 = 1; &scan2start; &scan3start; &scan1start; } ); $scan1-> Tk::bind('' => sub { }); } elsif ($numscan1 == 1) { $scan1-> form(-left => '187', -top => '319'); $scan1-> configure(-background => 'white'); $scan1-> Tk::bind('' => sub { if (($numscan2 == 0) && ($numscan3 == 0)) { $scan2->formForget; $scan3->formForget; $numscan1 = 0; &scan1start; } } ); $scan1-> Tk::bind('' => sub { }); } } sub scan2start { if ($numscan2 == 0) { $scan2-> form(-left => '102', -top => '211'); $scan2-> configure(-background => 'black'); $scan2-> Tk::bind('' => sub { $numscan2 = 1; &scan2start; } ); $scan2-> Tk::bind('' => sub { }); } elsif ($numscan2 == 1) { $scan2-> form(-left => '102', -top => '211'); $scan2-> configure(-background => 'white'); $scan2-> Tk::bind('' => sub { $numscan2 = 0; &scan2start; } ); $scan2-> Tk::bind('' => sub { }); } } sub scan3start { if ($numscan3 == 0) { $scan3-> form(-left => '202', -top => '211'); $scan3-> configure(-background => 'black'); $scan3-> Tk::bind('' => sub { $numscan3 = 1; &scan3start; } ); $scan3-> Tk::bind('' => sub { }); } elsif ($numscan3 == 1) { $scan3-> form(-left => '202', -top => '211'); $scan3-> configure(-background => 'white'); $scan3-> Tk::bind('' => sub { $numscan3 = 0; &scan3start; } ); $scan3-> Tk::bind('' => sub { }); } }