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