tkinter.dnd — Поддержка перетаскивания

Исходный код: Lib/tkinter/dnd.py.


Примечание

Это экспериментальный вариант, который будет устаревшим, когда будет заменен на Tk DND.

Модуль tkinter.dnd обеспечивает поддержку перетаскивания объектов в пределах одного приложения, в одном окне или между окнами. Чтобы объект можно было перетаскивать, вы должны создать для него привязку к событию, которое запускает процесс перетаскивания. Обычно вы привязываете событие ButtonPress к написанной вами функции обратного вызова (см. Связки и события). Функция должна вызывать dnd_start(), где „source“ - это объект, который нужно перетащить, а „event“ - это событие, вызвавшее вызов (аргумент вашей функции обратного вызова).

Выбор целевого объекта происходит следующим образом:

  1. Нисходящий поиск целевого виджета в области под мышью

  • Целевой виджет должен иметь вызываемый атрибут dnd_accept.

  • Если dnd_accept не присутствует или возвращает None, поиск переходит к родительскому виджету

  • Если целевой виджет не найден, то целевым объектом будет None

  1. Вызов <старая_цель>.dnd_leave(source, event).

  2. Вызов <новая_цель>.dnd_enter(source, event).

  3. Вызов <цель>.dnd_commit(source, event) для уведомления о падении

  4. Вызов <источник>.dnd_end(target, event) для сигнализации окончания перетаскивания

class tkinter.dnd.DndHandler(source, event)

Класс DndHandler обрабатывает события перетаскивания, отслеживая события Motion и ButtonRelease на корне виджета событий.

cancel(event=None)

Отмените процесс перетаскивания.

finish(event, commit=0)

Выполните завершение функций перетаскивания.

on_motion(event)

Осмотрите область под мышью на наличие целевых объектов во время перетаскивания.

on_release(event)

Сигнализирует об окончании перетаскивания, когда срабатывает схема отпускания.

tkinter.dnd.dnd_start(source, event)

Заводская функция для процесса перетаскивания.

Вернуться на верх