一意のままでファイルを開くことを処理する Gtk.Application を使用しようとしています。Gtk3を使用してUbuntu 12.04でpython 2.7.3を使用しています(pythonとGtkの両方でかなり新しい)
アプリケーションはパラメーターなしで正常に動作しますが、ファイルを開こうとして実行すると、ファイル リストの取得に失敗します。できる限り最小限に抑えたコードを次に示します。
#!/usr/bin/env python
import sys
from gi.repository import Gtk, Gio
def do_open(app, files, *hint):
print(app)
print(files)
print(hint)
def do_activate(app):
print "activate"
test = Gtk.Application(application_id="a.b", flags=Gio.ApplicationFlags.HANDLES_OPEN)
test.set_inactivity_timeout(10000)
test.connect("open", do_open)
test.connect("activate", do_activate)
test.run(sys.argv)
引数なしでプログラムを実行すると、「アクティブ化」と表示されますが、これで問題ありません。パラメータ (./test.py test.py など) を指定して実行すると、次のようになります。
/usr/lib/python2.7/dist-packages/gi/types.py:43: Warning: g_value_get_boxed: assertion `G_VALUE_HOLDS_BOXED (value)' failed
return info.invoke(*args, **kwargs)
<Application object at 0x1c75230 (GtkApplication at 0x1cba0b0)>
[]
(1, '')
そのアサーションが失敗する理由と、ファイルの空のリストを取得する理由を誰かが理解していますか?
このタスクは一般的であるように見えますが、オンラインで実際の例を見つけることもできませんでした。