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)

拖放过程的工厂函数。

另请参见

绑定和事件