"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)

   The *DndHandler* class handles drag-and-drop events tracking Motion
   and ButtonRelease events on the root of the event widget.

   cancel(event=None)

      ドラッグアンドドロップ処理をキャンセルします。

   finish(event, commit=0)

      ドラッグアンドドロップの終了処理を行う関数を実行します。

   on_motion(event)

      ドラッグ中にマウスの下の領域を調べ、対象オブジェクトを探します。

   on_release(event)

      ボタンを離すイベントのパターンに一致すると、ドラッグの終了を通知
      します。

tkinter.dnd.dnd_start(source, event)

   ドラッグアンドドロップ処理のファクトリ関数です。 ドラッグを管理する
   "DndHandler" インスタンスを返し、ドラッグを開始できなかった場合は
   "None" を返します。

参考: バインディングとイベント
