Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
after(3)	      User Contributed Perl Documentation	      after(3)

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

SYNOPSIS
       A A $widget->after(ms)

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

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

       A A $widget->afterCancel($id)

       A A $id = $widget->afterIdle(callback)

       A A $widget->afterInfo?($id)?

       A A $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 posible 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.32.1			  2013-11-15			      after(3)

NAME | SYNOPSIS | DESCRIPTION | Changing a repeat timer interval | The after() method has several forms as follows: | SEE ALSO | KEYWORDS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Tk::after&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help