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

源代碼: Lib/tkinter/dnd.py


備注

此模塊是實(shí)驗(yàn)性的且在為 Tk DND 所替代后將被棄用。

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

目標(biāo)對(duì)象的選擇方式如下:

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

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

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

  • 如果目標(biāo)控件未找到,則目標(biāo)對(duì)象為 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) 來(lái)通知釋放

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

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

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

cancel(event=None)?

取消拖放進(jìn)程。

finish(event, commit=0)?

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

on_motion(event)?

在執(zhí)行拖動(dòng)期間為目標(biāo)對(duì)象檢查鼠標(biāo)之下的區(qū)域。

on_release(event)?

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

tkinter.dnd.dnd_start(source, event)?

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

參見(jiàn)

綁定和事件