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

源代碼: Lib/tkinter/dnd.py


備注

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

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

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

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

  • 目標控件應當具有一個(gè)指向可調用對象的 dnd_accept 屬性

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

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

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

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

  3. 調用 <target>.dnd_commit(source, event) 來(lái)通知釋放

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

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

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

cancel(event=None)?

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

finish(event, commit=0)?

執行結束播放函數。

on_motion(event)?

在執行拖動(dòng)期間為目標對象檢查鼠標之下的區域。

on_release(event)?

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

tkinter.dnd.dnd_start(source, event)?

用于拖放進(jìn)程的工廠(chǎng)函數。

參見(jiàn)

綁定和事件