PyGTK 拖放

PyGTK 拖放

具有关联X窗口的小部件可以进行拖放操作。在程序中,小部件作为拖放的源和/或目标必须首先被指定。被定义为源的小部件可以发送被拖曳的数据。当被拖曳的数据被放置在目标小部件上时,该小部件接受它。

设置拖放功能的应用程序需要以下步骤:

步骤1 - 设置源小部件。

步骤2 - drag_source_set()方法指定拖曳操作的目标类型 –

widget.drag_source_set(start_button_mask, targets, info)

步骤3 − start_button_mask参数指定了一个按钮位掩码,用来启动拖动操作。

步骤4 − target参数是一个包含此结构的元组列表。

(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)

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()方法来可选地检查拖动数据来确定拖动数据是否适用。必须调用drag_context.drag_status()方法来更新drag_context状态。

“drag-drop”处理程序必须使用drag_dest_find_target()方法确定匹配的目标,然后使用drag_get_data()方法请求拖动数据。数据将在”drag-data-received”处理程序中可用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程