tkinter.dnd – Prise en charge du glisser-déposer

Code source : Lib/tkinter/dnd.py


Note

Ceci est expérimental et devrait être obsolète lorsqu'il sera remplacé par le Tk DND.

Le module tkinter.dnd offre une prise en charge du glisser-déposer d'objets au sein d'une même application, dans la même fenêtre ou entre les fenêtres. Pour activer le glissement d'un objet, vous devez créer une liaison d'événements pour celui-ci qui démarre le processus de glisser-déposer. En règle générale, vous liez un événement ButtonPress à une fonction de rappel que vous écrivez (voir Liaisons et événements). La fonction doit appeler dnd_start(), où source est l'objet à faire glisser et event est l'événement qui a invoqué l'appel (l'argument de votre fonction de rappel).

La sélection d'un objet cible se produit comme suit :

  1. Recherche descendante de la zone sous la souris pour le widget cible

  • Le widget cible doit avoir un attribut appelable dnd_accept

  • Si dnd_accept n'est pas présent ou renvoie None, la recherche se déplace vers le widget parent

  • Si aucun widget cible n'est trouvé, alors l'objet cible est None

  1. Appel à <old_target>.dnd_leave(source, event)

  2. Appel à <new_target>.dnd_enter(source, event)

  3. Appel à <target>.dnd_commit(source, event) pour notifier le déposer.

  4. Appel à <source>.dnd_end(target, event) pour signaler la fin du glisser-déposer

class tkinter.dnd.DndHandler(source, event)

La classe DndHandler gère les événements de glisser-déposer qui suivent les événements Motion et ButtonRelease à la racine du widget d'événement.

cancel(event=None)

Annule le processus de glisser-déposer.

finish(event, commit=0)

Exécute les fonctions de fin de glisser-déposer.

on_motion(event)

Inspecte la zone sous la souris pour les objets cibles pendant que le glissement est effectué.

on_release(event)

Signale la fin de la traînée lorsque le modèle de relâchement est déclenché.

tkinter.dnd.dnd_start(source, event)

Fonction de fabrique pour le processus de glisser-déposer.