focus

 

focus - Gestion du focus


SYNTAXE

 focus
 focus fenêtre
 focus option ?arg arg ...?

DESCRIPTION


La commande focus est utilisée pour gérer le focus Tk. A tout instant, une fenêtre de chaque écran est désignée comme la focus window; tout événements d'appui ou de relâchement d'une touche pour cet écran sont envoyés à cette fenêtre. C'est normalement la tâche du gestionnaire de fenêtres de rediriger le focus parmi les fenêtres top-level d'un écran. Par exemple, certains gestionnaires de fenêtres donnent automatiquement le focus à une fenêtre top-level chaque fois que la souris y entre; d'autres redirigent le focus seulement quand l'utilisateur clique dans une fenêtre. Usuellement le gestionnaire de fenêtres positionnera le focus seulement dans les fenêtres top-level, laissant à l'application le soin de rediriger le focus parmi les enfants de la top-level.

Tk mémorise une focus window pour chaque top-level (le plus récent descendant de cette top-level à recevoir le focus); quand le gestionnaire de fenêtres donne le focus à une top-level, Tk le redirige automatiquement vers la fenêtre mémorisée. A l'intérieur d'une top-level Tk utilise un modèle de focus explicite par défaut. Déplacer la souris à l'intérieur d'une top-level ne change normalement pas le focus; le focus change seulement quand un widget décide explicitement de réclamer le focus (ex., à cause d'un clic sur un bouton ), ou quand l'utilisateur frappe une touche comme Tab qui déplace le focus.

La procédure Tcl tk_focusFollowsMouse peut être appelée pour créer un modèle de focus implicite: elle reconfigure Tk pour que le focus soit positionné dans une fenêtre chaque fois que la souris y entre. Les procédures Tcl tk_focusNext et tk_focusPrev implémentent l'ordre du focus parmi les fenêtres d'une top-level; elles sont utilisées dans les bindings par défaut de Tab et Shift-Tab, entre autres choses.

La commande focus peut prendre n'importe quelle des formes suivantes:

focus Retourne le nom de chemin de la fenêtre qui a le focus sur l'écran contenant la fenêtre principale de l'application, ou une chaîne vide si aucune fenêtre de cette application n'a le focus sur cet écran. Note: il est préférable de spécifier l'écran explicitement en utilisant -displayof (voir ci-dessous) ainsi le code fonctionnera dans les applications utilisant plusieurs écrans.

focus fenêtre Si l'application a actuellement le focus sur fenêtre, cette commande réinitialise le focus de fenêtre de l'écran vers fenêtre et retourne une chaîne vide. Si l'application ne détient pas actuellement le focus sur fenêtre de l'écran, fenêtre sera mémorisée comme le focus pour sa top-level; la prochaine fois que le focus se déplace vers la top-level, Tk le redirigera vers fenêtre. Si fenêtre est une chaîne vide alors la commande ne fait rien.

focus -displayof fenêtre Retourne le nom de la fenêtre qui a le focus à l'écran contenant fenêtre. Si la fenêtre qui a le focus pour l'écran de fenêtre n'est pas dans cette application, la valeur de retour est une chaîne vide.

focus -force fenêtre Déplace le focus vers fenêtre, même si l'application n'a pas actuellement le focus pour l'écran. cette commande doit être utilisée avec précaution. Dans des conditions normales, une application ne doit pas demander le focus elle-même; à la place, elle doit attendre que le gestionnaire de fenêtres lui donne le focus. Si fenêtre est une chaîne vide alors la commande ne fait rien.

focus -lastfor fenêtre Retourne le nom de la dernière fenêtre qui a reçu le focus parmi toutes celles situées dans la même top-level que fenêtre. Si aucune fenêtre dans cette top-level n'a reçu le focus, ou si la dernière fenêtre a été effacée, alors le nom de la top-level est retourné. La valeur de retour est la fenêtre qui recevra le focus la prochaine fois que le gestionnaire de fenêtres donnera le focus à la top-level.


BIZARRERIES


Quand une fenêtre interne reçoit le focus, Tk ne positionne pas le focus X sur cette fenêtre; tant que X est concerné, le focus reste sur la fenêtre top-level contenant la fenêtre avec le focus. Néanmoins, Tk génère des événements FocusIn et FocusOut comme si le focus X était sur la fenêtre interne. Cette approche résout plusieurs problèmes qui se produiraient si le focus X était déplacé; le fait que le focus X qui est sur la top-level est invisible à moins que vous utilisiez du code C pour consulter le serveur X directement.


Traduit par Michel Salvagniac 2002-2003

Copyright © 2003 - Le Wiki Tcl/Tk Francophone.


Catégorie Manuel Tcl/Tk