2012-10-02 2 views
3

고유 한 상태를 유지하고 파일을 여는 Gtk.Application을 갖기 위해 노력하고 있습니다. 나는 Python 2.7.3을 Gtk3 (상당히 Python과 Gtk에 처음 사용)과 함께 Ubuntu 12.04에서 사용 중입니다.Gtk.Application을 파이썬과 함께 사용하려고 시도했지만 열려있는 핸들을 처리하지 못했습니다.

응용 프로그램이 매개 변수없이 정상적으로 실행되지만 파일을 열려고 할 때 파일 목록을 가져 오는 데 실패합니다. 여기에 내가 그것을 만들 수 있기 때문에, 같은 최소한의 코드입니다 : 내가 인수없이 프로그램을 실행하면 바로 인쇄가 잘되는 "활성화"

#!/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) 

. 그 주장이 실패하는 이유

/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, '') 

사람이 이해 하는가와 왜 파일의 빈 목록을 얻고있다 : 나는 (./test.py test.py 같은) 매개 변수와 함께 실행하면 나는 다음과 같은거야?

이 작업은 일반적으로 온라인에서 작동하는 예제를 찾지 못했습니다.

답변

3

PyGObject에 버그가 있습니다. GNOME Bugzilla에서 이미보고되었습니다. 버그 보고서 "Does not handle GFile in signal arguments"을 확인하십시오.

업데이트 : 2013 년에 버그가 수정되었으며 더 이상 주장이없고 파일 목록 (GFiles)을 반환합니다. 예상대로 즉, 코드는 (적어도 3.14를 사용) 작동 :

$ python test.py test.py 
<Application object at 0x7fcaf18f5d20 (GtkApplication at 0x11892b0)> 
[<__main__.GLocalFile object at 0x7fcaf18a6050 (GLocalFile at 0x11aea00)>] 
(1, '') 
+0

감사합니다! 나는 그것이 버그라고 생각했다. 내가 지금 발견 할 수있는 유일한 해결책은 HANDLES_COMMAND_LINE을 사용하고 수동으로 수행하는 것입니다. – Luis

관련 문제