tkinter.dnd
— Поддержка перетаскивания¶
Источник: Lib/tkinter/dnd.py
Примечание
Это экспериментальный вариант, который будет устаревшим, когда его заменят на Tk DND.
Модуль tkinter.dnd
обеспечивает поддержку перетаскивания объектов в пределах одного приложения, в одном окне или между окнами. Чтобы объект можно было перетаскивать, необходимо создать для него привязку к событию, которое запустит процесс перетаскивания. Обычно событие ButtonPress привязывается к написанной вами функции обратного вызова (см. Переплеты и события). Функция должна вызывать dnd_start()
, где „source“ - это объект, который нужно перетащить, а „event“ - это событие, вызвавшее вызов (аргумент вашей функции обратного вызова).
Выбор целевого объекта происходит следующим образом:
Нисходящий поиск целевого виджета в области под мышью
Целевой виджет должен иметь вызываемый атрибут dnd_accept.
Если dnd_accept отсутствует или возвращает
None
, поиск переходит к родительскому виджетуЕсли целевой виджет не найден, то целевым объектом будет
None
.
Вызов <старая_цель>.dnd_leave(источник, событие).
Вызов <новая_цель>.dnd_enter(источник, событие).
Вызов <цель>.dnd_commit(источник, событие) для уведомления о падении
Вызов <source>.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)¶
Заводская функция для процесса перетаскивания.
См.также