我在两个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
。怎么了?
答案 0 :(得分:0)
您混合了参数(复制粘贴需要有针对性的用户...;-)
拖动运动参数为:
widget, context, x, y, time_
但是您有:
self, widget, context, x, y, timestamp