tkinter.dnd — Drag and Drop-Unterstützung

Quellcode: Lib/tkinter/dnd.py


Hinweis

Dies ist experimentell und wird voraussichtlich veraltet sein, wenn es durch das Tk DND ersetzt wird.

Das Modul tkinter.dnd bietet Drag-and-Drop-Unterstützung für Objekte innerhalb einer einzelnen Anwendung, innerhalb desselben Fensters oder zwischen Fenstern. Um ein Objekt ziehbar zu machen, müssen Sie für dieses Objekt eine Ereignisbindung erstellen, die den Drag-and-Drop-Prozess startet. Typischerweise binden Sie ein ButtonPress-Ereignis an eine von Ihnen geschriebene Callback-Funktion (siehe Bindings und Ereignisse). Die Funktion sollte dnd_start() aufrufen, wobei 'source' das zu ziehende Objekt und 'event' das Ereignis ist, das den Aufruf ausgelöst hat (das Argument Ihrer Callback-Funktion).

Die Auswahl eines Zielobjekts erfolgt wie folgt:

  1. Suche von oben nach unten nach dem Widget, das das Ziel unter der Maus ist

  • Das Ziel-Widget sollte ein aufrufbares Attribut dnd_accept haben

  • Wenn dnd_accept nicht vorhanden ist oder None zurückgibt, wird die Suche zum Eltern-Widget fortgesetzt

  • Wenn kein Ziel-Widget gefunden wird, ist das Zielobjekt None

  1. Aufruf von <old_target>.dnd_leave(source, event)

  2. Aufruf von <new_target>.dnd_enter(source, event)

  3. Aufruf von <target>.dnd_commit(source, event) zur Benachrichtigung über das Ablegen

  4. Aufruf von <source>.dnd_end(target, event) zur Anzeige des Endes des Drag-and-Drop-Vorgangs

class tkinter.dnd.DndHandler(source, event)

Die Klasse DndHandler verwaltet Drag-and-Drop-Ereignisse und verfolgt Motion- und ButtonRelease-Ereignisse auf der Wurzel des Ereignis-Widgets.

cancel(event=None)

Bricht den Drag-and-Drop-Prozess ab.

finish(event, commit=0)

Führt die Funktionen zum Beenden des Drag-and-Drop-Vorgangs aus.

on_motion(event)

Überprüft während des Ziehens den Bereich unter der Maus auf Zielobjekte.

on_release(event)

Signalisiert das Ende des Ziehens, wenn das Release-Muster ausgelöst wird.

tkinter.dnd.dnd_start(source, event)

Factory-Funktion für den Drag-and-Drop-Prozess.