Hi All,
I am creating a memory-game for my Kid. I would like to change the features of the button on Click. I am Not sure how to do it. My code is as follows.
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
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.
Update:
Dear All,
Thanks to all of you, for your suggestions. I have almost completed my script. However I cannot understand, How to make Tk sleep?? Here when I click on 2nd button, I want image to appear atleast for 2 secs and then disappear. However the image is disappearing when you click 2nd button. Forgive me if my explaination is Not proper.
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;

In reply to Tk Game - Image on Button by sanPerl

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.