dnd bindsource widget type script dnd clearsource widget dnd bindtarget widget type event script dnd cleartaget widget dnd drag widget ?-action list? ?-description list? ?-cursorwindow widget? ?-callback script? |
typeに指定できるタイプは以下の通りです。
タイプ | 説明 |
---|---|
text/plain |
ASCII文字列に変換されます。 システムのencodingが使われ、ASCIIからUTF-8、UTF-8からASCIIのマッピングが行われます。 |
text/plain;charset=UTF-8 | UTF-8文字列に変換されます。転送前と受信後に変換をしません。 |
text/uri-list |
ファイル名のリストとして扱われます。 システムのencodingが使われ、ASCIIからUTF-8、UTF-8からASCIIのマッピングが行われます。 |
bindsourceとbindtargetのスクリプト内では、以下のイベント予約語が使えます。
イベント予約語 | 説明 |
---|---|
%% | 1つの%に置換されます。 |
%A | Drag&Drop操作のカレントアクション |
%a | Drag sourceによってサポートされるアクションリスト |
%b | Drag&Drop操作中にマウスボタンの押された状態 |
%D | Dropされたデータ(文字列) |
%d | Drag sourceによって提供された説明リスト |
%m | 押されたキーボードの修飾キー |
%T | Drag&Drop操作のカレントタイプ |
%W | イベントの発生したウィンドウ |
%X | マウスポインタのX座標(rootウィンドウ相対) |
%x | マウスポインタのX座標(イベントを受信したウィンドウ相対) |
%Y | マウスポインタのY座標(rootウィンドウ相対) |
%y | マウスポインタのY座標(イベントを受信したウィンドウ相対) |
eventに指定できるイベントは以下の通りです。
イベント | 説明 |
---|---|
<DragEnter> | Dargしているマウスポインタがwidgetに入った時に発生するイベントです。 |
<Drag> | Dargしているマウスポインタがwidget上を移動した時に発生するイベントです。 |
<DragLeave> | Dargしているマウスポインタがwidgetから出た時に発生するイベントです。 |
<Ask> |
Darg中にマウスボタンを離した時に発生するイベントです。 widgetがDropを許すかどうか調べるために使われます。 |
<Drop> | DargしているマウスポインタをwidgetにDropした時に発生するイベントです。 |
package require tkdnd label .l1 -text "Source: " entry .source label .l2 -text "Target: " entry .target grid .l1 .source -sticky we grid .l2 .target -sticky we .source insert end {この文字列をDragできます} # Source側 dnd bindsource .source {text/plain} { return [.source get] } bind .source <B1-Leave> { dnd drag %W } # Target側 dnd bindtarget .target {text/plain} <Drop> { .target insert end %D } |
Dropできない場所にDrag中のマウスカーソルを持っていくとマウスカーソルが禁止マークになります。
package require tkdnd pack [text .text] # Target側 dnd bindtarget .text text/uri-list <Drop> { .text insert end "%D\n" } |
"%D"は、Dragした複数のファイル名がリスト形式で取得できることに注意してください。