2016-07-26 7 views
6

나는 (창에 싸여) 내보기를 생성하고이 같은 URL을로드 한 : Gtk 3.0 및 WebKit2 4.0을 사용하여 Python의 링크에서 클릭을 처리하는 방법은 무엇입니까?

self.web_view = WebKit2.WebView() 
self.web_view.load_uri("https://en.wikipedia.org") 

내 "미니 브라우저"시작

나는 지역 링크 (자바 스크립트 이벤트 나에 바인딩 된 링크를 클릭 할 수 있습니다 같은 도메인에있는 다른 페이지로의 링크). 그러나 링크가 다른 도메인을 가리키면 아무 일도 일어나지 않습니다. 외부 링크의 클릭을 어떻게 잡아낼 수 있습니까? 또는 시스템 기본 브라우저에서 어떻게 이러한 링크를 열 수 있습니까?

업데이트 : 크로스 사이트 링크는 "미니 브라우저"로 처리되지 않습니다. 이벤트 훅 (onclick)을 작성하여 "미니 브라우저"를 중단하고 사용자 정의 로직을 기반으로 작동 시키거나 사이트 간 링크를 구성 할 수 있습니까?

+0

기본 웹킷을 사용하고 있습니까? gtk : pywebkitgtk (https://code.google.com/archive/p/pywebkitgtk)에 대한 python 기반 웹킷이 있습니다. 아마도 기본 python-webkit2보다 잘 작동합니다. [Here] (https://stackoverflow.com/questions/647041/need-a-simple-hello-world-example-using-the-webkit-library-in-python)는 몇 가지 사용법 예입니다. – Alex

+0

여기에 [example 파이썬 브라우저의] (https://gist.github.com/kklimonda/890640#file-pybrowser-py) gtk와 webkit을 사용하고 있는데, 나는 단지'https : // en.wikipedia.org'를 시도했다. 나를 위해 일해. 기본적으로 같은 호출이 사용됩니다 .. Gtk.VBox에서 상속 받았습니까? – Alex

+1

@Alex 예제는 이전 gtk 및 webkit 버전 :-( – Witek

답변

2

GtkLinkButton을 사용하셨습니까? 링크를 열려면 기본 브라우저를 사용 gtk-show-uri의 문서에 따르면, 당신은 또한 같은 http:// 아니면 그냥 그런 GVFS를 설치할 수 있습니다 데비안 기반 배포판의 경우

ftp://로 URI 체계에 대한 지원을 얻기 위해 gvfs를 설치해야합니다 :

sudo apt-get install gvfs gvfs-backends gvfs-fuse

그 문제가 해결되지 않으면, 당신은 또한이 같은 맞춤 브라우저의 경우 FALSE

을 반환 경우, gtk_show_uri의 오류 메시지를 확인하실 수 있습니다 너의 것, GtkLinkButton의 문서에 따르면 activate-link signal에 연결하고 처리기에서 true를 반환해야합니다 ... 아마도 이미 그렇게했습니다.

+0

파이썬에서 GtkLinkButton을 사용하는 방법에 대한 문서가 있습니까? – Witek

+0

링크 버튼과 [여기] (http : // python-gtk-3)의 [공식 gtk 파이썬 문서입니다] (https://developer.gnome.org/pygtk/stable/class-gtklinkbutton.html) -tutorial.readthedocs.io/en/latest/button_widgets.html)는 링크 버튼을위한 파이썬 스 니펫을 제공하는 튜토리얼입니다. – Alex

+0

지금은 이해가 가지 않습니다. LinkButton은 무엇을 위해 사용합니까? 내 WebView에서 링크가 작동해야합니다 ... – Witek

0

대답은 GtkLinkButton과 전혀 관련이 없으며 링크를로드하기 위해 gvfs를 사용하지 않기 때문에 대답이 실제로 꺼져 있습니다.

왜 도메인 간 링크가 작동하지 않는지 알 수 없습니다. 그들은 기본적으로 작동해야합니다. WebKitWebView::decide-policy 신호를 사용하여이 동작을 제어 할 수 있지만 기본 정책은 링크를 여는 것입니다.

귀하는 _blank 대상의 링크에 문제가 있다고 말씀하셨습니다. 이것이 당신이 테스트 한 유일한 도메인 간 링크 였을 가능성이 있습니까? 그 문제는 간단합니다 : WebKit은 자동으로 새 창을 열 수 없습니다. 코드를 작성해야합니다. 다행히도 꽤 쉽습니다. WebKitWebView::create에 연결하고 거기에있는 문서를 따르십시오. 기본적으로 새 GtkWindow를 만들고 과 관련된 WebKitWebView를 만들고 새 뷰를 창에 집어 넣은 다음 새 뷰에서 WebKitWebView::ready-to-show에 연결하고 해당 신호가 방출 될 때 창을 표시해야합니다.