gpt4 book ai didi

linux - 使用 PyGTK,如何获取拖放事件的路径名而不是 uri?

转载 作者:太空宇宙 更新时间:2023-11-04 04:21:27 25 4
gpt4 key购买 nike

我在 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?我的目标是使用用户选择的文件作为程序的命令行参数来运行外部程序(我已经让这部分工作,除了我需要传递用户选择的文件的正确路径)。

最佳答案

好的,所以我知道我可以采取额外的步骤来做到这一点

my_path = urlparse.urlparse(data.get_text()).path

这将为我提供包括该文件的完整目录路径。那我就可以做

base_directory = my_path.rsplit('/', 1)[0]
selected_file = my_path.rsplit('/', 1)[1].rstrip('\n')

关于linux - 使用 PyGTK,如何获取拖放事件的路径名而不是 uri?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12695019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com