我在 Ubuntu 下使用 PyGTK 开发了一个应用程序,它允许用户将文件拖到标签小部件中。这是 Python 2.7。适用代码如下:
import pygtk
pygtk.require('2.0')
import gtk
w = gtk.Window()
w.drag_set_set(0, [], 0)
w.connect('drag_motion', motion_cb)
w.connect('drag_drop', drop_cb)
w.connect('drag_data_received', got_data_cb)
w.connect('destroy', lambda w: gtk_main_quit())
l = gtk.Label()
l.set_text('Drag File Here')
w.add(l)
w.show_all()
gtk.main()
def motion_cb(wid, context, x, y, time):
context.drag_status(gtk.gdk.ACTION_COPY, time)
return True
def drop_cb(wid, context, x, y, time):
wid.drag_get_dta(context, context.targets[-1], time)
return True
def got_data_cb(wid, context, x, y, data, info, time):
# the following line returns a URI? I want the absolute file path
print data.get_text()
所以这个got_data_cb
函数有一个gtk.SelectionData
项目。当我打电话get_text()
给我一个URI。从 Python 2.6 开始,get_uris()
我还监视了一个函数。如何获取返回的绝对文件路径而不是此 uri?我的目标是使用用户选择的文件作为程序的命令行参数来运行外部程序(我已经让这部分工作,除了我需要为用户选择的文件传递正确的路径)。