tkinter.dnd — Поддержка перетаскивания
Исходный код: Lib/tkinter/dnd.py
Примечание
Эта функция является экспериментальной и будет объявлена устаревшей после замены на Tk DND.
Модуль tkinter.dnd обеспечивает поддержку перетаскивания объектов внутри одного приложения, в одном окне или между окнами. Чтобы объект можно было перетаскивать, необходимо создать для него привязку события, запускающую процесс перетаскивания. Обычно событие ButtonPress привязывают к написанной вами функции обратного вызова (см. Привязки и события). Эта функция должна вызывать dnd_start(), где source — перетаскиваемый объект, а event — событие, вызвавшее этот вызов (аргумент функции обратного вызова).
Выбор целевого объекта происходит следующим образом:
-
Поиск сверху вниз целевого виджета в области под указателем мыши:
- целевой виджет должен иметь вызываемый атрибут dnd_accept;
- если атрибут dnd_accept отсутствует или возвращает
None, поиск продолжается в родительском виджете; - если целевой виджет не найден, целевым объектом становится
None.
- Вызов
<old_target>.dnd_leave(source, event). - Вызов
<new_target>.dnd_enter(source, event). - Вызов
<target>.dnd_commit(source, event)для уведомления о сбросе. - Вызов
<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) -
Фабричная функция для процесса перетаскивания. Возвращает экземпляр
DndHandler, управляющий перетаскиванием, илиNone, если перетаскивание не удалось начать.
См. также
© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/library/tkinter.dnd.html