我正在尝试将文本文件查看器配置为通过将文件拖到文件上来打开文件。我查看了几个教程并尝试模仿它们,但我的小部件似乎从未接收过“drag_data_received”信号。在这里,self.topLevel是一个gtk.Window小部件,我的应用程序的根,这是设置它的代码的最后一点。我已经确认将文本文件拖到它上根本不会调用OnDrop。
def OnDrop(widget, context, x, y, sel, targetType, timestamp):
print context.actions
print context.targets
return True
self.topLevel.connect("drag_data_received", OnDrop)
self.topLevel.drag_dest_set(gtk.DEST_DEFAULT_DROP |
gtk.DEST_DEFAULT_MOTION |
gtk.DEST_DEFAULT_HIGHLIGHT, [("text/*", 0, 0)], gtk.gdk.ACTION_COPY)
self.topLevel.show_all()
答案 0 :(得分:0)
我意识到我的应用程序正在获取信号,但我将所有内容放入的TextView小部件(因为它占据了大部分窗口)吸收了这些信号而没有调用我的回调函数;将文件放到应用程序的任何其他部分修复它。我通过调用TextView的drop_dest_unset函数来实现它。