Provided by: perl-tk_804.036+dfsg1-1ubuntu3_amd64 bug

NAME

       Tk::after - Execute a command after a time delay

SYNOPSIS

         $widget->after(ms)

         $id = $widget->after(ms?,callback?)

         $id = $widget->repeat(ms?,callback?)

         $widget->afterCancel($id)

         $id = $widget->afterIdle(callback)

         $widget->afterInfo?($id)?

         $id->time(?delay?)

DESCRIPTION

       This method is used to delay execution of the program or to execute a callback in background sometime in
       the future.

       In perl/Tk $widget->after is implemented via the class "Tk::After", and callbacks are associated with
       $widget, and are automatically cancelled when the widget is destroyed. An almost identical interface, but
       without automatic cancel, and without repeat is provided via Tk::after method.

   Internal Details
       The internal Tk::After class has the following synopsis:

         $id = Tk::After->new($widget, tid, $time, 'once',   callback);
         $id = Tk::After->new($widget, tid, $time, 'repeat', callback);
         $id->cancel;
         $id->time(?delay?);

       $id is a Tk::After object, an array of 5 elements:

       $widget is the parent widget reference.

       tid is the internal timer id, a unique string.

       $time is the string 'idle', representing an idle queue timer, or a integer millisecond value.

       once or repeat specifies whether the timer is a one-time after event, or a repeating repeat event.

       callback specifies a Perl/Tk Tk::Callback object.

Changing a repeat timer interval

       It's possible to change a repeat timer's delay value, or even cancel any timer, using the time method. If
       delay is specified and non-zero, a new timer delay is established.  If delay is zero the timer event is
       canceled just as if $id->cancel were invoked.  In all cases the current millisecond timer delay is
       returned.

       Note: the new timer delay will take effect on the subsequent timer event - this command will not cancel
       the pending timer event and re-issue it with the new delay time.

The after() method has several forms as follows:

       $widget->after(ms)
           The  value  ms  must  be  an  integer  giving  a  time  in  milliseconds.   The command sleeps for ms
           milliseconds and then returns.  While the command is sleeping the application  does  not  respond  to
           events.

       $widget->after(ms,callback)
           In  this  form  the  command  returns  immediately,  but  it  arranges  for  callback  be executed ms
           milliseconds later as an event handler.  The callback will be executed exactly  once,  at  the  given
           time.   The  command  will be executed in context of $widget.  If an error occurs while executing the
           delayed command then the Tk::Error mechanism is used to report the error.  The after command  returns
           an  identifier  (an  object in the perl/Tk case) that can be used to cancel the delayed command using
           afterCancel.

       $widget->repeat(ms,callback)
           In this form  the  command  returns  immediately,  but  it  arranges  for  callback  be  executed  ms
           milliseconds  later  as  an  event  handler.  After  callback  has executed it is re-scheduled, to be
           executed in a futher ms, and so on until it is cancelled.

       $widget->afterCancel($id)
       $id->cancel
           Cancels the execution of a delayed command  that  was  previously  scheduled.   $id  indicates  which
           command  should  be  canceled;  it must have been the return value from a previous after command.  If
           the command given by $id has already been executed (and is not scheduled to be executed  again)  then
           afterCancel has no effect.

       $widget->afterCancel(callback)
           This  form  is  not  robust  in perl/Tk - its use is deprecated.  This command should also cancel the
           execution of a delayed command.  The callback argument is compared with pending callbacks, if a match
           is found, that callback is cancelled and will never be executed;  if no such  callback  is  currently
           pending then the afterCancel has no effect.

       $widget->afterIdle(callback)
           Arranges  for  callback  to  be  evaluated later as an idle callback.  The script will be run exactly
           once, the next time the event loop is entered and there  are  no  events  to  process.   The  command
           returns  an identifier that can be used to cancel the delayed command using afterCancel.  If an error
           occurs while executing the script then the Tk::Error mechanism is used to report the error.

       $widget->afterInfo?($id)?
           This command returns information about existing event handlers.  If no $id argument is supplied,  the
           command  returns  a  list of the identifiers for all existing event handlers created by the after and
           repeat commands for $widget. If $id is supplied, it specifies an existing handler; $id must have been
           the return value from some previous call to after or repeat and it must not  have  triggered  yet  or
           been  cancelled.  In  this case the command returns a list with three elements.  The first element of
           the list is the callback associated with $id, the second element is either idle or the integer  timer
           millisecond  value  to  indicate  what kind of event handler it is, and the third is a string once or
           repeat to differentiate an after from a repeat event.

       The after(ms) and afterIdle forms of the command assume  that  the  application  is  event  driven:   the
       delayed commands will not be executed unless the application enters the event loop.  In applications that
       are not normally event-driven, the event loop can be entered with the vwait and update commands.

SEE ALSO

       Tk::Error Tk::callbacks

KEYWORDS

       cancel, delay, idle callback, sleep, time

perl v5.38.2                                       2024-04-01                                         after(3pm)