NOM

Tk::callbacks - Spécifier le code que Tk doit appeler.


SYNOPSIS

On peut spécifier un callback de l'une des manières suivantes :

Sans arguments:

  ... => \&subname, ...
  ... => sub { ... }, ...
  ... => 'methodname', ...

ou avec des arguments :

  ... => [ \&subname ?, args ...? ], ...
  ... => [ sub { ... } ?, args...? ], ...
  ... => [ 'methodname' ?, args...?], ...


DESCRIPTION

Perl/Tk possède un callback, là où Tcl/Tk possède une ligne de commande (c'est à dire un fragment de Tcl à exécuter). Un callback perl/Tk peut prendre l'une des formes de base suivantes :

Ces diverses possibilités peuvent être accompagnées d'arguments en entourant le tout de crochets ([]). Voici quelques exemples :

$mw->bind($class, ``<Delete>'' => 'Delete');

Ceci appellera $widget->Delete, [la référence à] $widget étant fournie (par bind) lorsque la touche Delete sera pressée.

Le fait que bind fournisse un objet widget est idéal dans beaucoup de situations mais peut être irritant dans d'autres. Ce comportement peut être modifié en utilisant la forme liste :

$a->bind(``<Delete>'',[$b => 'Delete']);

puisque le premier élément $b est un objet, bind appelera $b->Delete.

Notez que l'ordre des méthodes/objets n'ayant de sens que pour les callbacks ``bind'', l'``auto-quotation'' dans perl5.001 rend la première des instructions suivantes un peu plus lisible :

$w->configure(-yscrollcommand => [ set => $ysb ]);

$w->configure(-yscrollcommand => [ $ysb => 'set' ]);

mais toutes les deux appelleront $ysb->set (arguments fournis par Tk)

Une autre utilisation des arguments vous permet d'écrire des méthodes généralistes faciles à réutiliser :

$a->bind(``<Next>'',['Next','Page']);

$a->bind(``<Down>'',['Next','Line']);

Ceci appellera respectivement $a->Next('Page') ou $a->Next('Line').

Notez que le contenu de ``[]'' est évalué par perl à la création du callback. On désire souvent que les arguments fournis au callback dépendent du détail de l'événement qui a provoqué son exécution. Pour répondre à cela les callbacks peuvent être imbriquées en utilisant le ``constructeur'' ``Ev(...)''. ``Ev(...)'' insère les objets callback dans la liste d'arguments du callback. Lorsque le code de collage de perl/Tk prépare la liste d'arguments pour le callback qu'il s'apprête à appeler, il s'intéresse à ces objets spéciaux et leur applique récursivement le processus de callback.


EXEMPLES

  $entry->bind('<Return>' => [$w , 'validate', Ev(['get'])]);
  $toplevel->bind('all', '<Visibility>', [\&unobscure, Ev('s')]);
  $mw->bind($class, '<Down>', ['SetCursor', Ev('UpDownLine',1)]);


VOIR AUSSI

Tk::bind Tk::after Tk::options Tk::fileevent


MOTS-CLÉS

callback, closure, anonymous subroutine, bind


TRADUCTION

Jean-Pierre Vidal jeanpierre.vidal@free.fr


RELECTURE

Aucune relecture pour le moment.