tkinter.dnd — Stöd för dra och släpp

Källkod: Lib/tkinter/dnd.py


Anteckning

Detta är experimentellt och kommer att tas bort när det ersätts med Tk DND.

Modulen tkinter.dnd ger stöd för att dra och släppa objekt inom en och samma applikation, inom samma fönster eller mellan fönster. För att ett objekt ska kunna dras måste du skapa en händelsebindning för det som startar dra-och-släpp-processen. Vanligtvis binder du en ButtonPress-händelse till en callback-funktion som du skriver (se Bindningar och händelser). Funktionen ska anropa dnd_start(), där ’source’ är objektet som ska dras och ’event’ är händelsen som utlöste anropet (argumentet till din callback-funktion).

Val av målobjekt sker på följande sätt:

  1. Top-down-sökning av området under musen efter målwidget

  • Målwidgeten bör ha ett anropsbart dnd_accept-attribut

  • Om dnd_accept inte finns eller returnerar None flyttas sökningen till den överordnade widgeten

  • Om ingen målwidget hittas är målobjektet None

  1. Anrop till <old_target>.dnd_leave(source, event)

  2. Anrop till <new_target>.dnd_enter(source, event)

  3. Anrop till <target>.dnd_commit(source, event) för att meddela om avlämning

  4. Anrop till <source>.dnd_end(target, event) för att signalera slutet på drag-and-drop

class tkinter.dnd.DndHandler(source, event)

Klassen DndHandler hanterar drag-och-släpp-händelser som spårar Motion- och ButtonRelease-händelser på roten av händelsewidgeten.

cancel(event=None)

Avbryt dra-och-släpp-processen.

finish(event, commit=0)

Utför slutet av drag-och-släpp-funktioner.

on_motion(event)

Inspektera området under musen efter målobjekt medan dragningen utförs.

on_release(event)

Signalera slutet på dragningen när utlösningsmönstret utlöses.

tkinter.dnd.dnd_start(source, event)

Fabriksfunktion för drag-and-drop-process.