Bon nombre de widgets, comme par exemple les listes de sélection (Listbox) et les canevas (Canvas), peuvent se comporter comme des fenêtres de visualisation d’une aire virtuelle plus large. Vous pouvez associer à de tels widgets des barres de défilement pour donner un moyen à l’utilisateur de faire glisser la vue et d’accéder aux zones actuellement hors de celle-ci. Voici une capture d’écran qui montre un champ de saisie (Entry) muni d’une barre de défilement.
La position normalisée de la barre de défilement est un nombre de l’intervalle fermé [0.0, 1.0] qui détermine la position du curseur. 0.0 se réfère à la position la plus à gauche d’une barre horizontale, et à la position la plus haute d’une barre verticale.
Pour créer une nouvelle barre de défilement Scrollbar comme enfant d’une fenêtre ou d’un cadre nommé parent:
Le constructeur retourne le nouveau widget Scrollbar créé. Ses options incluent:
Paramètres: |
|
---|
Les méthodes d’une barre de défilement Scrollbar incluent:
Si aucun argument n’est fournie, cette méthode retourne l’une des chaînes 'arrow1', 'arrow2', 'slider', ou '', selon la position courante de la souris. La chaîne vide est retourné si le curseur n’est pas actuellement au dessus du curseur ou d’une des deux flèches.
Pour mettre en valeur un de ces éléments (en utilisant les valeurs des options activerelief et activebackground), appelez cette méthode avec l’une des chaînes indiquées plus haut.
Étant donné un mouvement de dx pixels selon x et de dy pixels selon y, cette méthode retourne un flottant qui devrait être ajouté à la valeur normalisée correspondante de la position courante du curseur afin qu’il effectue le même mouvement.
Étant donné une position (x, y), cette méthode retourne la valeur normalisée (dans l’intervalle [0.0, 1.0]) de la position du curseur qui serait la plus proche de cette position.
Retourne un 2-tuple (a, b) qui décrit la position courante du curseur. a appartient à [0, 1] et correspond au bord gauche ou haut du curseur selon l’orientation de la barre. b se rapporte à son bord droit ou bas. Par exemple, si le curseur s’étend de la moitié au trois quart de la barre de défilement, vous obtiendriez (0.5,0.75).
Retourne une chaîne de caractères qui précise la partie de la barre de défilement située à la position (x, y). Les valeurs de retour possibles sont 'arrow1', 'trough1', 'slider', 'trough2', 'arrow2', ou la chaîne vide '' si cette position ne correpond à aucun composant de la barre.
Pour munir un widget w d’une barre de défilement, configurer son option xscrollcommand ou yscrollcommand avec cette méthode. Les arguments ont la même signification que les valeurs retournées par la méthode get() décrite plus tôt. De cette façon, le widget w est en mesure d’avertir la barre de défilement de la portion de sa zone d’affichage actuellement visible afin que la barre soit ajustée en conséquence. Notez que le déplacement du curseur ne produit pas pour autant le glissement de la zone visible du widget w.
Lorsque l’utilisateur manipule la barre de défilement, celle-ci appelle la fonction de rappel - notée command ci-après - qui a été associée à son option command. Les arguments transmis à la fonction dépendent de ce qu’à fait l’utilisateur:
Lorsque l’utilisateur déplace le curseur d’une unité vers la gauche ou vers le haut, en cliquant par exemple sur la flèche gauche ou haute, l’appel de command est du type:
command('scroll', -1, 'units')
ou qu’il déplace le curseur d’une unité vers la droite ou vers le bas, les arguments sont:
command('scroll', 1, 'units')
Lorsqu’il effectue un mouvement d’une page vers la gauche ou vers le haut:
command('scroll', -1, 'pages')
vers la droite ou vers le bas:
command('scroll', 1, 'pages')
Lorqu’il déplace le curseur jusqu’à la position normalisée f de l’intervalle [0,1] (0 tout à gauche ou tout en haut, 1 tout à droite ou tout en bas), l’appel est de la forme:
command('moveto', f)
Ces séquences d’appels sont conformes aux arguments attendus par les méthodes xview() et yview() des canevas (Canvas), listes de sélection (Listbox), et du widget de texte (Text). Les champs de saisis n’ont pas de méthode xview(). Voir Défilement du contenu d’un champ de saisie.
Voici un fragment de code qui montre la création d’un canevas muni de barres de défilement horizontale et verticale:
canv = Canvas(root, width=600, height=400,
defilregion=(0, 0, 1200, 800))
canv.grid(row=0, column=0)
defilY = Scrollbar(root, orient='vertical',
command=canv.yview)
defilY.grid(row=0, column=1, sticky='ns')
defilX = Scrollbar(self, orient='horizontal',
command=canv.xview)
defilX.grid(row=1, column=0, sticky='ew')
canv['xscrollcommand'] = defilX.set
canv['yscrollcommand'] = defilY.set
Notes:
L’association fonctionne dans les deux sens. L’option xscrollcommand du canevas doit être associée à la méthode set() de la barre de défilement horizontale et l’option command de cette même barre de défilement doit être associée à la méthode xview() du canvas. Même chose pour la barre de défilement verticale.
L’option sticky du gestionnaire de positionnement grid() utilisé pour positionner les barres de défilement les force à s’étendre assez pour s’ajuster aux dimensions du canevas.