in reply to Tk not functioning if variable is zero

What does $abc->repeat(0,\&update) do?
  • Comment on Re: Tk not functioning if variable is zero

Replies are listed 'Best First'.
Re: Re: Tk not functioning if variable is zero
by pg (Canon) on Dec 06, 2003 at 02:58 UTC

    It means repeat every 0 ms, which is not doable in the real world, unless the task does not take time.

    In the world of computer, the code sucked up all CPU cycles, and the GUI never got a chance to be displayed.

    Modify the update function a little bit, run it, and we will see that the code actually runs, as we get all those "here". But that is the only thing the code has a chance to do.

    use Tk; use strict; my $init = 0; my $display = 0; my $mw = MainWindow->new; $mw->geometry("300x100"); my $menubar = $mw->Frame()->pack(-side => 'left'); my $mainframe = $mw->Frame(-bg => 'darkblue', -container => 0); $mainframe->pack(-fill => 'both', -side => 'top', -expand => 1); $menubar->Button(-text => "Start", -command => \&start)->pack(-side => + "left"); $menubar->Button(-text => "Stop", -command => \&stop)->pack(-side => " +left"); $menubar->Button(-text => "Reset", -command => \&reset)->pack(-side => + "left"); my $abc = $mainframe->Label(-textvariable => \$display); $abc->pack; $abc->repeat($display, \&update); MainLoop; sub start { $init=1; } sub stop { $init=0; } sub reset { $init=0; $display=0; } sub update { #if ($init==1){ print "here\n"; $display++; #} }
      O.k, lets put that down as "missing something glaringly obvious". I had left the $display in the 'repeat' due to something I was trying to do earlier; forgot to remove it. Change it for '1' and all is fine and dandy. Cheers :-)
      I'll think a bit before I post next time.
      Anyone who read my earlier post about Time::Hires, might see what I am eventually trying to achieve. I'm just writing a little stopwatch/countdown timer that doesn't eat up CPU. Was trying to get Time::Hires to help me only cycle a few times per second, rather than constantly updating the display.
      Incidentally, any thoughts on that would be appreciated.