Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Tk April Fools

by zentara (Archbishop)
on Apr 01, 2008 at 19:57 UTC ( #677821=sourcecode: print w/replies, xml ) Need Help??
Category: Gui Programming
Author/Contact Info zentara
Description: I guess it's getting pretty hard to create a realistic April Fool's prank, so here is a lame one. :-) So I don't cause busy people too much aggravation...... Escape key will exit.
#!/usr/bin/perl
use warnings;
use strict;
use Tk;

my $mw=tkinit;
$mw->geometry('+300+300');

$mw->protocol('WM_DELETE_WINDOW' => sub {
           my $x= int rand (600);
           my $y= int rand (600);
           $mw->geometry("+$x+$y");
           });

$mw->bind("<Key>", [  sub { if($_[1] eq 'Escape'){exit} } , Ev('K')  ]
+ );

$mw->fontCreate('big',
   -family=>'arial',
  -weight=>'bold',
  -size=>int(-24*24/14));

my $c=$mw->Canvas(-width=>300,-height=>200,-bg=>'white')->pack;

my $x = 50;
my $y = 100;

foreach my $l (map { chr } (0x41,0x70,0x72,0x69,0x6c,0x20,0x46,0x6f,0x
+6f,0x6c,0x73)){

my $t1 = $c->create('text',$x,$y,
              -anchor=>'w',
              -font => 'big',
              -text=>$l,
              -tags=>['z']);

(undef,undef,$x,undef)= $c->bbox($t1);
}

my @ra = qw(-1 5 9 10 7 1 0 -8 -2 -10 6 -4 4 -5 8 -9 3 -6 2 -7 -3); 
$mw->repeat(100,sub{
          my (@i)= $c->find('withtag','z');
          foreach(@i){
          push (@ra,shift(@ra));
          $c->move($_,$ra[0],$ra[1]);
       }  
      if( $ra[0] == -4 ){$mw->after(1000)}
});

$mw->repeat(500,sub{
           my $x= int rand (600);
           my $y= int rand (600);
           $mw->geometry("+$x+$y");
});

MainLoop;
Replies are listed 'Best First'.
Re: Tk April Fools
by Anonymous Monk on Apr 02, 2008 at 04:27 UTC
    To be propper, you need an exit button. You should bind it to mouse movement.
      Well I wanted the Fool to try and chase the window with the mouse, trying to hit the Close icon. Binding exit to mouse movement would preclude that.

      Speaking of non-lameness, have you seen the best prank of the day, by the BBC? Check out this Flash.... Flying Penquins


      I'm not really a human, but I play one on earth. Cogito ergo sum a bum
        ier, bind the window movement to mouse movement, not on timer

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: sourcecode [id://677821]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (4)
As of 2021-01-17 12:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Notices?