There is a "toggling button" demo script supplied with Tk called after_demo that makes effective use of after().
Terry Greenlaw <terry@encompass.is.net> of Encompass Technologies posted a character cell animator for the really bored. Here it is in a slightly modified form that allows string input from the command line (note too the recursive call that doesn't sop up system memory):
#!/usr/bin/perl =head1 NAME From: z50816@mip.lasc.lockheed.com "Terry Greenlaw" Thu Feb 1 12:02:24 EST 1996 To: ptk@guest.WPI.EDU Subj: A code sample for the REALLY bored For everyone with a case of Browser envy after using Microsoft's Internet Explorer, here's a perl/tk script only slightly more useful than a script to do <BLINK>. Don't know why I wrote it. Don't know why you'd run it. Maybe if you were writing a ticker tape application. Or had a weird thing for Times Square. Anyway.... tog Terry Greenlaw (on-site @ Lockheed Martin) Encompass Technologies z50816@mip.lasc.lockheed.com terry@encompass.is.net ################################################################## =cut #!/usr/bin/perl #use strict; use Tk; $message=join(' ',@ARGV,''); if (!$message) { $message="THIS IS A VERY LONG SCROLLING MESSAGE... "; $topmssg="This is the top of the screen"; $botmssg="This is the bottom of the screen"; } else { $topmssg=$message; $botmssg=$message; } $top = MainWindow->new; $l1 = $top->Label(-fg => 'White', -text => $topmssg); $l1->pack(-fill => 'both', -expand => 1 ); $m1 = $top->Label(-fg=>'Red', -bg=>'black', -textvariable => \$message, -width => 15 ); $m1->pack(); $m2 = $top->Label(-wrap=>1, -fg=>'Green', -bg=>'black', -textvariable => \$message2, -width=>1, -height=>8 ); $m2->pack(-anchor=>'w'); $l2 = $top->Label(-fg => 'White', -text => $botmssg); $l2->pack(-fill => 'both', -expand => 1 ); after(100, \&scroll_it); $top->MainLoop; sub scroll_it { $message =~ /(.)(.*)/; $message="$2$1"; ($message2 = $message) =~ s/ / /g; after(100, \&scroll_it); } __END__(Please note that a script like this is now distributed as "TickerTape" in your Tk-b*/Contrib/ directory.)
Previous | Return to table of contents | Next