2017-01-06 2 views
0

여기 파이썬 웹킷은 Gtk에서 간단한 브라우저입니다 :Python + Webkit + Gtk에서 파일 브라우저를 다운로드하는 방법은 무엇입니까?

#!/usr/bin/python 

import gtk 
import webkit 

view = webkit.WebView() 
sw = gtk.ScrolledWindow() 

sw.add(view) 

win = gtk.Window(gtk.WINDOW_TOPLEVEL) 

win.add(sw) 

win.show_all() 

view.open("https://www.kernel.org/") 

gtk.main() 

브라우징은 완벽하게 작동합니다. 불행히도 로컬 컴퓨터에 파일을 저장하는 기능은 없습니다. 나는 해결책을 찾지 못했습니다. 진행률 표시 줄, 폴더 선택이 필요하지 않습니다. 다운로드 한 링크를 클릭하고 싶습니다./home/user 디렉토리에 파일을 저장하는 가장 쉬운 방법을 알고 계십니까?

+0

약간 주제에서 벗어나지 만 pygobject와 webkit2gtk를 사용해야합니다. 오래된 pygtk 버전은 지원되지 않으며 웹킷 버전은 매우 안전하지 않습니다. – TingPing

답변

2

docs 에서처럼 mime-type-policy-decision-requesteddownload-requested 신호에 연결해야합니다.

view.connect('download-requested', download_requested) 
view.connect('mime-type-policy-decision-requested', policy_decision_requested) 

그럼 당신은 마임 타입을 확인하고 당신이 그것을 다운로드하려는 경우 결정 : download-requested이 이후에 방출되면

def policy_decision_requested(view, frame, request, mimetype, policy_decision): 
    if mimetype != 'text/html': 
     policy_decision.download() 
     return True 

, 당신은 WebKit.Download 객체가이 경우에 다운로드 또는을 (처리하도록 할 수 있습니다) 파이썬과 함께 :

def download_requested(view, download): 
    name = download.get_suggested_filename() 
    path = os.path.join(
     GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DOWNLOAD), 
     name 
    ) 
    urlretrieve(download.get_uri(), path) # urllib.request.urlretrieve 
    return False 
+0

도움 주셔서 감사합니다. 그것은 작동합니다. – user2435244

관련 문제