tkinter.dnd — Unterstützung für Drag-and-drop

Quellcode: Lib/tkinter/dnd.py


Bemerkung

Dies ist experimentell und wird abgekündigt, sobald es durch Tk DND ersetzt wird.

Das Modul tkinter.dnd stellt Drag-and-drop-Unterstützung für Objekte innerhalb einer einzelnen Anwendung bereit, im selben Fenster oder zwischen Fenstern. Damit ein Objekt gezogen werden kann, musst du dafür eine Ereignisbindung erzeugen, die den Drag-and-drop-Vorgang startet. Üblicherweise bindest du ein ButtonPress-Ereignis an eine selbst geschriebene Callback-Funktion (siehe Bindungen und Ereignisse). Die Funktion sollte dnd_start() aufrufen, wobei source das zu ziehende Objekt ist und event das Ereignis, das den Aufruf ausgelöst hat (das Argument deiner Callback-Funktion).

Die Auswahl eines Zielobjekts läuft folgendermaßen ab:

  1. Der Bereich unter der Maus wird von oben nach unten nach einem Ziel-Widget durchsucht:

    • das Ziel-Widget sollte ein aufrufbares Attribut dnd_accept besitzen;

    • ist dnd_accept nicht vorhanden oder gibt es None zurück, wird die Suche beim übergeordneten Widget fortgesetzt;

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

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

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

  4. Aufruf von <target>.dnd_commit(source, event), um das Ablegen zu melden.

  5. Aufruf von <source>.dnd_end(target, event), um das Ende von Drag-and-drop zu signalisieren.

class tkinter.dnd.DndHandler(source, event)

Die Klasse DndHandler verarbeitet Drag-and-drop-Ereignisse und verfolgt dazu Motion- und ButtonRelease-Ereignisse auf dem Root-Fenster des Ereignis-Widgets.

cancel(event=None)

Bricht den Drag-and-drop-Vorgang ab.

finish(event, commit=0)

Führt die Funktionen zum Beenden von Drag-and-drop aus.

on_motion(event)

Untersucht während des Ziehens den Bereich unter der Maus auf Zielobjekte.

on_release(event)

Signalisiert das Ende des Ziehens, wenn das Muster zum Loslassen ausgelöst wird.

tkinter.dnd.dnd_start(source, event)

Factory-Funktion für den Drag-and-drop-Vorgang. Gibt die DndHandler-Instanz zurück, die das Ziehen verwaltet, oder None, wenn kein Ziehen gestartet werden konnte.