、ボタンをクリックして私がする必要がありhtmlを取得するには、GUIの応答性を維持したいので、別のスレッドで行うことにしました。私はHTMLをレンダリングするためにWebKitを使用します。PyGTKを、スレッドとWebKitの私のPyGTKのアプリで
問題は、分離されたスレッドでWebViewで空のページが表示されることです。
これは動作します:
import gtk
import webkit
webView = webkit.WebView()
webView.load_html_string('<h1>Hello Mars</h1>', 'file:///')
window = gtk.Window()
window.add(webView)
window.show_all()
gtk.mainloop()
これは動作しませんが、空のウィンドウを生成します。
import gtk
import webkit
import threading
def show_html():
webView = webkit.WebView()
webView.load_html_string('<h1>Hello Mars</h1>', 'file:///')
window = gtk.Window()
window.add(webView)
window.show_all()
thread = threading.Thread(target=show_html)
thread.setDaemon(True)
thread.start()
gtk.mainloop()
はそれが理由webkit is not thread-safeです。このための回避策はありますか?
あなたはあなたができるいくつかのコードを持っていますか:
次のコードは、(実際のシナリオでHTMLを得ることに遅延をシミュレートするために使用され
time.sleep
を)私の作品あなたの例の更新版ですシェア? – jcollado@jcolladoコード例を追加しました。更新された質問を確認してください。 – umpirsky
ちょっとしたスタイルノート。 'thread.setDaemon(True)'と 'gtk.mainloop'の代わりに' thread.daemon = True'と 'gtk.main'をそれぞれ使用してください。 – jcollado