# `tkinter.dnd` — Suporte para arrastar e soltar

Código-fonte: Lib/tkinter/dnd.py

Nota

Isto é experimental e deverá ser descontinuado quando for substituído pelo Tk DND.

O módulo `tkinter.dnd` fornece suporte de arrastar e soltar para objetos dentro de uma única aplicação, dentro da mesma janela ou entre janelas. Para permitir que um objeto seja arrastado, você deve criar uma associação de evento para ele que inicie o processo de arrastar e soltar. Normalmente, você associa um evento ButtonPress a uma função de retorno que você escreve (consulte Ligações e Eventos). A função deve chamar `dnd_start()`, onde ‘source’ é o objeto a ser arrastado e ‘event’ é o evento que invocou a chamada (o argumento para sua função de retorno).

A seleção de um objeto de destino ocorre da seguinte forma:

1. Pesquisa de cima para baixo da área sob o mouse para o widget alvo

> - O widget alvo deve ter um atributo chamável dnd_accept

> - Se dnd_accept não estiver presente ou retornar None, a pesquisa vai para o widget pai

> - Se nenhum widget de destino for encontrado, o objeto alvo é None

2. Chamada para <old_target>.dnd_leave(source, event)

3. Chamada para <new_target>.dnd_enter(source, event)

4. Chamada para <target>.dnd_commit(source, event) para notificar que soltou

5. Chamada para <source>.dnd_end(target, event) para sinalizar o fim do arrastar e soltar

class `tkinter.dnd.``DndHandler`(source, event)

  A classe DndHandler trata de eventos de arrastar e soltar que rastreiam eventos Motion e ButtonRelease na raiz do widget de evento.

  `cancel`(event=None)

    Cancela o processo de arrastar e soltar.

  `finish`(event, commit=0)

    Executa o fim das funções de arrastar e soltar.

  `on_motion`(event)

    Inspeciona a área abaixo do mouse para objetos alvos enquanto o arrasto é executado.

  `on_release`(event)

    Sinaliza o fim do arrasto quando o padrão de liberação for acionado.

`tkinter.dnd.``dnd_start`(source, event)

  Função de fábrica para processo de arrastar e soltar.

Ver também

Ligações e Eventos