PyGTK 拖放

PyGTK 拖放

有关联的X窗口的小部件是可以拖放的。在程序中,必须首先指定一个小部件作为拖放的源和/或目的地。被定义为源的小部件可以发出拖放的数据。当拖放的数据被放到目的地小部件上时,目的地小部件会接受它。

以下步骤涉及设置一个支持拖放的应用程序-

第 1 步 - 设置一个源小组件。

第 2 步 - drag_source_set() 方法指定了拖动操作的目标类型 –

widget.drag_source_set(start_button_mask, targets, info)

第3步 - start_button_mask参数指定了一个开始拖动操作的按钮的位掩码。

第4步 --目标参数是一个此结构的图元的列表-

(target, flags, info)

目标参数是一个代表拖动类型的字符串,例如,text/plain或image/x-xpixmap。

第5步 - 以下标志是预定义的 —

  • gtk.TARGET_SAME_APP
  • gtk.TARGET_SAME_WIDGET

第6步 - 由于标志被设置为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)

The flags parameter can take one of the following constants −

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

拖动 “处理程序必须通过将目的地目标与 gtk.gdk.DragContext 目标相匹配来确定拖动数据是否合适,也可以通过调用 drag_get_data() 方法检查拖动数据。必须调用 gtk.gdk.DragContext . drag_status( ) 方法来更新 drag_context 的状态。

拖放 “处理程序必须使用 drag_dest_find_target() 方法确定匹配的目标,然后使用 drag_get_data() 方法要求提供拖放数据。这些数据将在 “drag-data-received “处理程序中提供。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程