tkinter.dnd — 拖放支持

源代码: Lib/tkinter/dnd.py


注意

这是实验性的,当它被 Tk DND 替换时,将会被弃用。

tkinter.dnd 模块为单个应用程序内、同一窗口内或窗口之间的对象提供拖放支持。要启用对象的拖动,您必须为其创建一个事件绑定,以启动拖放过程。通常,您会将 ButtonPress 事件绑定到您编写的回调函数(请参阅绑定和事件)。该函数应调用dnd_start(),其中 ‘source’ 是要拖动的对象,‘event’ 是调用该调用的事件(回调函数的参数)。

目标对象的选择方式如下:

  1. 自上而下搜索鼠标下的区域以查找目标控件

  • 目标控件应具有可调用的 *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)* 以通知放置

  4. 调用 *<source>.dnd_end(target, event)* 以表示拖放结束

class tkinter.dnd.DndHandler(source, event)

DndHandler 类处理拖放事件,跟踪事件控件根上的 Motion 和 ButtonRelease 事件。

cancel(event=None)

取消拖放过程。

finish(event, commit=0)

执行拖放结束函数。

on_motion(event)

在执行拖动时检查鼠标下方的区域以查找目标对象。

on_release(event)

当触发释放模式时,表示拖动结束。

tkinter.dnd.dnd_start(source, event)

用于拖放过程的工厂函数。

另请参阅

绑定和事件