sanPerl has asked for the wisdom of the Perl Monks concerning the following question:
Can some guru, please tell me what command I can write between the commented lines so that I can assign '$myimage' to the same button.use strict; use Tk; use Tk::Button; require Tk::Photo; my $top = new MainWindow; my $myimage = $top->Photo(-format=>'bmp',-file=>"image/images2.bmp", - +height=> 50, -width => 50); for my $x (1..10) { for my $y (1..10) { my $button = $top->Button(); $button = $top->Button(-width => 5, -height=>2, -command => sub {c +heck_status($x,$y)}); $button->grid(-column=>$y,-row=>$x); } } sub check_status() { my ($myx,$myy)=@_; ######### What to Write ??? #### ################################ } MainLoop
use strict; use Tk; use Tk::Button; use Tk::Canvas; use Tk::Photo; use Tk::Splashscreen; require Tk::Splash; ##################### my @filearray; opendir( DIR, 'images' ) or die "Can't open images DIR $!"; while ( my $entry = readdir( DIR ) ) { my $type = ( -d "images\\$entry" ) ? "dir" : "file"; push @filearray, "images\\$entry" if (($type eq "file") && ($e +ntry =~ /\.gif$/)); #print "$type\t$entry\t@filearray\n"; } closedir( DIR ); @filearray = (@filearray,@filearray); #################### #fisher_yates_shuffle(\@filearray); unshift @filearray, "NIL"; #foreach (@filearray) {print $_,"\n";}; my @arranged_gifs; my $top = new MainWindow; my $loop_cntr=0; my $state_of_button=-1; my $prev_x = undef; my $prev_y = undef; my $number_of_clicks=0; my $prev_clicked_button=undef; foreach my $x (1..10) { for my $y (1..5) { $loop_cntr++; $arranged_gifs[$x][$y]= $filearray[$loop_cntr]; #print "$loop_cntr:$x:$y:-".$arranged_gifs[$x][$y]."\t".$filea +rray[$loop_cntr]."\n"; my $button = $top->Button(-width => 10, -height =>3,-command=> +sub{click_button($x,$y,\$top->gridSlaves(-row=>$x,-column=>$y), \$pre +v_clicked_button)}); $button->configure(-text=>'Hey'); $button->grid(-row =>$x , -column =>$y); } } sub click_button($$$){ my ($myx,$myy,$clicked_button,$prev_clicked_button)=@_; $number_of_clicks++; my $mywait; my $image = $top->Photo(-format => 'gif' , -file=>$arranged_gifs[$ +myx][$myy]); ${$clicked_button}->configure(-width => 50, -height =>30, -image=> +$image, -state=>'disabled'); if ($number_of_clicks == 1) { print "Hello\n"; ${$prev_clicked_button} = ${$clicked_button}; } if ($number_of_clicks == 2) { print "pair\n"; sleep(2); $number_of_clicks=0; ${$prev_clicked_button}->configure(-width => 10, -height =>3, +-state=>'normal', -image=>undef); ${$clicked_button}->configure(-width => 10, -height =>3, -stat +e=>'normal', -image=>undef); } } sub fisher_yates_shuffle { my $array = shift; my $i; for ($i = @$array; --$i; ) { my $j = int rand ($i+1); next if $i == $j; @$array[$i,$j] = @$array[$j,$i]; } } MainLoop;
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Tk Game - Image on Button
by rinceWind (Monsignor) on Nov 17, 2006 at 11:07 UTC | |
|
Re: Tk Game - Image on Button
by zentara (Cardinal) on Nov 17, 2006 at 12:57 UTC | |
by Anonymous Monk on Nov 20, 2006 at 11:25 UTC | |
by zentara (Cardinal) on Nov 20, 2006 at 12:57 UTC | |
|
Re: Tk Game - Image on Button
by vkon (Curate) on Nov 17, 2006 at 12:07 UTC | |
|
Re: Tk Game - Image on Button
by strat (Canon) on Nov 18, 2006 at 09:20 UTC | |
|
Re: Tk Game - Image on Button
by j3 (Friar) on Nov 17, 2006 at 19:31 UTC |