2017-01-06 16 views
0

は、PythonのWebkitの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のバージョンはサポートされておらず、そのWebkitのバージョンは非常に安全ではありません。 – 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) 

次に、あなたがそれをダウンロードしたい場合は、MIMEタイプをチェックして決める:download-requestedがその後放出された場合

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

を、あなたはWebKit.Downloadオブジェクトが、この場合、ダウンロードや(を処理させることができます)Pythonでそれをしてください:

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

関連する問題