tkinter.dnd --- 拖放操作支持?

源代碼: Lib/tkinter/dnd.py


備注

此模塊是實驗性的且在為 Tk DND 所替代后將被棄用。

tkinter.dnd 模塊為單個應(yīng)用內(nèi)部的對象提供了在同一窗口中或多個窗口間的拖放操作支持。 要將對象設(shè)為可拖放,你必須為其創(chuàng)建啟動拖放進程的事件綁定。 通常,你要將 ButtonPress 事件綁定到你所編寫的回調(diào)函數(shù) (參見 綁定和事件)。 該函數(shù)應(yīng)當調(diào)用 dnd_start(),其中 'source' 為要拖動的對象,而 'event' 為發(fā)起調(diào)用的事件(你的回調(diào)函數(shù)的參數(shù))。

目標對象的選擇方式如下:

  1. 從頂至底地在鼠標之下的區(qū)域中搜索目標控件

  • 目標控件應(yīng)當具有一個指向可調(diào)用對象的 dnd_accept 屬性

  • 如果 dnd_accept 不存在或是返回 None,則將轉(zhuǎn)至父控件中搜索

  • 如果目標控件未找到,則目標對象為 None

  1. 調(diào)用 <old_target>.dnd_leave(source, event)

  2. 調(diào)用 <new_target>.dnd_enter(source, event)

  3. 調(diào)用 <target>.dnd_commit(source, event) 來通知釋放

  4. 調(diào)用 <source>.dnd_end(target, event) 來表明拖放的結(jié)束

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

DndHandler 類處理拖放事件,在事件控件的根對象上跟蹤 Motion 和 ButtonRelease 事件。

cancel(event=None)?

取消拖放進程。

finish(event, commit=0)?

執(zhí)行結(jié)束播放函數(shù)。

on_motion(event)?

在執(zhí)行拖動期間為目標對象檢查鼠標之下的區(qū)域。

on_release(event)?

當釋放模式被觸發(fā)時表明拖動的結(jié)束。

tkinter.dnd.dnd_start(source, event)?

用于拖放進程的工廠函數(shù)。