tkinter.dnd ---拖放支持

源代码: Lib/tkinter/dnd.py


注解

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

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

选择目标对象的过程如下:

  1. 鼠标下区域的自上而下搜索目标小部件

  • 目标小部件应该有一个可调用的 dnd_accept 属性

  • 如果 dnd_accept 不存在或返回无,搜索移动到父小部件

  • 如果找不到目标小部件,则目标对象为“无”

  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 类处理跟踪事件小部件根目录上的运动和按钮释放事件的拖放事件。

cancel(event=None)

取消拖放过程。

finish(event, commit=0)

执行拖放函数结束。

on_motion(event)

执行拖动时,检查鼠标下方的区域是否有目标对象。

on_release(event)

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

tkinter.dnd.dnd_start(source, event)

用于拖放过程的工厂功能。