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 を返します。