Spec-Zone.ru › Python 3.13

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

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

Примечание

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

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

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

  1. Поиск сверху вниз области под мышкой для целевого виджета
  • Целевой виджет должен иметь атрибут dnd_accept, являющийся вызываемым объектом
  • Если dnd_accept отсутствует или возвращает None, поиск переходит к родительскому виджету
  • Если целевой виджет не найден, то целевой объект None
  1. Вызов <old_target>.dnd_leave(source, event)
  2. Вызов <new_target>.dnd_enter(source, event)
  3. Вызов <target>.dnd_commit(source, event), чтобы уведомить о завершении перетаскивания
  4. Вызов <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)

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

См. также

Привязки и события

© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/tkinter.dnd.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API