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

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


Примечание

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

Модуль tkinter.dnd обеспечивает поддержку перетаскивания объектов в пределах одного приложения, в пределах одного окна или между окнами. Чтобы включить перетаскивание объекта, необходимо создать для него привязку к событию, которая запускает процесс перетаскивания. Как правило, вы привязываете событие нажатия кнопки к функции обратного вызова, которую вы пишете (см. Привязки и события). Функция должна вызывать dnd_start(), где «источник» - это объект, который нужно перетащить, а «событие» - это событие, вызвавшее вызов (аргумент вашей функции обратного вызова).

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

  1. Поиск целевого виджета в области под мышкой сверху вниз

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

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

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

  1. Вызов <old_target>.dnd_leave(источник, событие)

  2. Вызов <new_target>.dnd_enter(источник, событие)

  3. Вызов <target>.dnd_commit(источник, событие) для уведомления об удалении

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

class tkinter.dnd.DndHandler(source, event)

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

cancel(event=None)

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

finish(event, commit=0)

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

on_motion(event)

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

on_release(event)

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

tkinter.dnd.dnd_start(source, event)

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

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