PyGTK - Drag and Drop(拖放)
-
简述
具有关联 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()
源信号发射信号。下表列出了信号及其回调。drag_begin def drag_begin_cb(widget, drag_context, data): drag_data_get def drag_data_get_cb(widget, drag_context, selection_data, info, time, data): drag_data_delete def drag_data_delete_cb(widget, drag_context, data): drag_end def drag_end_cb(widget, drag_context, data): -
设置目标小部件
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()代表小部件。不管drop是否成功,调用drag_finish(). 如果动作是移动并且拖动成功,则将 TRUE 传递给 delete 参数drag_finish(). gtk.DEST_DEFAULT_ALL 如果设置,则指定应采取所有默认操作。 目标是包含目标信息的元组列表。动作参数是以下一个或多个值的位掩码或组合 -- gtk.gdk.ACTION_DEFAULT
- gtk.gdk.ACTION_COPY
- gtk.gdk.ACTION_MOVE
- gtk.gdk.ACTION_LINK
- gtk.gdk.ACTION_PRIVATE
- gtk.gdk.ACTION_ASK
“拖动运动”处理程序必须通过将目标目标与gtk.gdk.DragContext目标,并可选择通过调用drag_get_data()方法。这gtk.gdk.DragContext. drag_status() 方法必须被调用来更新drag_context地位。“拖放”处理程序必须使用drag_dest_find_target()方法,然后使用drag_get_data()方法。数据将在“drag-data-received”处理程序中可用。