ユーザーがファイルをラベルウィジェットにドラッグできるようにするPyGTKを使用して、Ubuntuでアプリケーションを開発しました。これは 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 の代わりに返される絶対ファイル パスを取得するにはどうすればよいですか? 私の目標は、ユーザーが選択したファイルをプログラムへのコマンドライン引数として使用して外部プログラムを実行することです (ユーザーが選択したファイルの正しいパスを渡す必要があることを除いて、この部分は既に機能しています)。