- PyGTK 教程
- PyGTK - 主页
- PyGTK - 简介
- PyGTK - 环境
- PyGTK - 你好世界
- PyGTK - 重要类
- PyGTK - 窗口类
- PyGTK - 按钮类
- PyGTK - 标签类
- PyGTK - 入门级
- PyGTK - 信号处理
- PyGTK - 事件处理
- PyGTK - 容器
- PyGTK - 盒子类
- PyGTK - ButtonBox 类
- PyGTK - 对齐类
- PyGTK - EventBox 类
- PyGTK - 布局类
- PyGTK - 组合框类
- PyGTK - ToggleButton 类
- PyGTK - CheckButton 类
- PyGTK - 单选按钮类
- PyGTK - 菜单栏、菜单和菜单项
- PyGTK - 工具栏类
- PyGTK - 调整类
- PyGTK - 范围类
- PyGTK - 规模类
- PyGTK - 滚动条类
- PyGTK - 对话框类
- PyGTK - 消息对话框类
- PyGTK - AboutDialog 类
- PyGTK - 字体选择对话框
- PyGTK - 颜色选择对话框
- PyGTK - 文件选择器对话框
- PyGTK - 笔记本类
- PyGTK - 框架类
- PyGTK - AspectFrame 类
- PyGTK - TreeView 类
- PyGTK - 窗格类
- PyGTK - 状态栏类
- PyGTK - ProgressBar 类
- PyGTK - 视口类
- PyGTK - 滚动窗口类
- PyGTK - 箭头类
- PyGTK - 图像类
- PyGTK - DrawingArea 类
- PyGTK - SpinButton 类
- PyGTK - 日历类
- PyGTK - 剪贴板类
- PyGTK - 标尺类
- PyGTK - 超时
- PyGTK - 拖放
- PyGTK 有用资源
- PyGTK - 快速指南
- PyGTK - 有用的资源
- PyGTK - 讨论
PyGTK - 拖放
具有关联 X Window 的小部件能够进行拖放。在程序中,必须首先指定一个小部件作为拖放的源和/或目的地。定义为源的小部件可以发送拖动的数据。当将拖动的数据放到目标小部件上时,目标小部件会接受它。
设置支持拖放的应用程序涉及以下步骤 -
步骤 1 - 设置源小部件。
步骤 2 - Drag_source_set() 方法指定拖动操作的目标类型 -
widget.drag_source_set(start_button_mask, targets, info)
步骤 3 - start_button_mask 参数指定启动拖动操作的按钮的位掩码。
步骤 4 - 目标参数是此结构的元组列表 -
(target, flags, info)
target 参数是表示拖动类型的字符串,例如 text/plain 或 image/x-xpixmap。
步骤 6 - 预定义以下标志 -
- gtk.TARGET_SAME_APP
- gtk.TARGET_SAME_WIDGET
步骤 7 - 由于标志设置为 0,因此不会有任何限制。
如果小部件不需要充当源,则可以取消设置 -
widget.drag_source_unset()
源信号发出信号。下表列出了信号及其回调。
拖动开始 | def Drag_begin_cb(小部件,drag_context,数据): |
拖动数据获取 | def Drag_data_get_cb(小部件,drag_context,selection_data,信息,时间,数据): |
拖拽数据删除 | def Drag_data_delete_cb(小部件,drag_context,数据): |
拖动结束 | def Drag_end_cb(小部件,drag_context,数据): |
设置目标小部件
Drag_dest_set()方法指定哪个小部件可以接收拖动的数据。
widget.drag_dest_set(flags, targets, action)
flags 参数可以采用以下常量之一 -
gtk.DEST_DEFAULT_MOTION | 这会检查拖动是否与该小部件的可能目标和操作列表相匹配,然后根据需要调用drag_status()。 |
gtk.DEST_DEFAULT_HIGHLIGHT | 只要拖动该小部件,就会在该小部件上突出显示 |
gtk.DEST_DEFAULT_DROP | 当发生放置时,如果拖动与该小部件的可能目标和操作列表匹配,则代表该小部件调用drag_get_data() 。无论放置是否成功,都调用drag_finish()。如果操作是移动并且拖动成功,则将删除参数 TRUE 传递给Drag_finish()。 |
gtk.DEST_DEFAULT_ALL | 如果设置,则指定应执行所有默认操作。 |
目标是包含目标信息的元组列表。actions 参数是以下一个或多个值的位掩码或组合 -
- gtk.gdk.ACTION_DEFAULT
- gtk.gdk.ACTION_COPY
- gtk.gdk.ACTION_MOVE
- gtk.gdk.ACTION_LINK
- gtk.gdk.ACTION_PRIVATE
- gtk.gdk.ACTION_ASK
“drag-motion”处理程序必须通过将目标目标与gtk.gdk.DragContext目标进行匹配以及(可选)通过调用 Drag_get_data ()方法检查拖动数据来确定拖动数据是否合适。gtk.gdk.DragContext 。_ 必须调用drag_status( )方法来更新drag_context状态。
“拖放”处理程序必须使用drag_dest_find_target()方法确定匹配的目标,然后使用drag_get_data()方法请求拖动数据。数据将在“drag-data-received”处理程序中可用。