Spec-Zone.ru › Python 3.14

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

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

Примечание

Эта функция является экспериментальной и будет объявлена устаревшей после замены на Tk DND.

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

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

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

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

Spec-Zone.ru

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