PyGTK拖放 - "运动"信号未升高,无法改变按钮外观

时间:2015-12-16 09:53:54

标签: python drag-and-drop gtk pygtk

我在两个PyGTK小部件上使用拖放功能 - 一个简单的Label和一个FileChooserButton。两者似乎都能正常工作。

但是,我希望在鼠标悬停时更改小部件的外观,这样用户就可以知道它可以接收到丢弃。

有没有办法自动完成?我尝试使用drag_motion信号手动实现它,但它从未被提出......

以下是一个基于http://faq.pygtk.org/index.py?req=show&file=faq23.031.htp的简单示例:

import gtk

TARGET_TYPE_URI_LIST = 80
dnd_list = [ ( 'text/uri-list', 0, TARGET_TYPE_URI_LIST ) ]

def on_drag_data_received(widget, context, x, y, selection, target_type, timestamp):
    print "DND received"

def on_drag_motion(self, widget, context, x, y, timestamp):
    print "DND motion"

w = gtk.Window()
w.connect('drag_data_received', on_drag_data_received)
w.connect('drag_motion', on_drag_motion)
w.drag_dest_set( gtk.DEST_DEFAULT_MOTION | gtk.DEST_DEFAULT_HIGHLIGHT | gtk.DEST_DEFAULT_DROP,
                 dnd_list, gtk.gdk.ACTION_COPY)

w.show_all()
gtk.main()
打印

DND received,但它永远不会打印DND motion。怎么了?

1 个答案:

答案 0 :(得分:0)

您混合了参数(复制粘贴需要有针对性的用户...;-)

拖动运动参数为:

widget, context, x, y, time_

但是您有:

self, widget, context, x, y, timestamp