Time Delays
There are times when you’ll want to be able to delay the
program a bit before going on, or maybe you’ll want to execute
the same command every minute. For complete details, see Chapter 15 and Chapter 17. To have the
program sleep for x number of milliseconds, call
after
with the number of milliseconds:
$widget->after(milliseconds
);
You almost never want to do this, as the event loop is blocked.
To specify a callback that will be called after so many milliseconds
instead of waiting, send a callback as the second argument to
after
:
$id = $widget->after(milliseconds, callback
);
# i.e.
$id = $widget->after(1000, \&do_something);
If you want
to execute a subroutine after the program has been idle for a while,
call afterIdle
:
$id = $widget->afterIdle(callback
);
To cancel
the call to after
or afterIdle
,
use afterCancel
with the $id
returned by after
:
$widget->afterCancel($id); # You can also do this: $id->cancel;
You can have the program repeatedly call the same callback by using
the repeat
method:
$widget->repeat(milliseconds, callback
);
# i.e.
$widget->repeat(600, \&update_status);
If you destroy $widget
, any calls to
after
and repeat
are
automatically canceled for you.
Get Mastering Perl/Tk now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.