Webkit Themes with PyGObject on Gtk3

I am trying to load a webkit view in a different thread than the main thread for gtk.

I see an example of PyGTK, Threads and WebKit

I am slightly modifying support for PyGObject and GTK3:

from gi.repository import Gtk from gi.repository import Gdk from gi.repository import GObject from gi.repository import GLib from gi.repository import WebKit import threading import time # Use threads Gdk.threads_init() class App(object): def __init__(self): window = Gtk.Window() webView = WebKit.WebView() window.add(webView) window.show_all() #webView.load_uri('http://www.google.com') # Here it works on main thread self.window = window self.webView = webView def run(self): Gtk.main() def show_html(self): print 'show html' time.sleep(1) print 'after sleep' # Update widget in main thread GLib.idle_add(self.webView.load_uri, 'http://www.google.com') # Here it doesn't work app = App() thread = threading.Thread(target=app.show_html) thread.start() app.run() Gtk.main() 

As a result, this is an empty window, and after-sleep printing is never performed. Calling idle_add does not work. The only working part is the call commented out in the main thread.

+6
source share
1 answer

I need GLib.threads_init () before gdk.

Similar:

 from gi.repository import Gtk from gi.repository import Gdk from gi.repository import GObject from gi.repository import GLib from gi.repository import WebKit import threading import time # Use threads GLib.threads_init() class App(object): def __init__(self): window = Gtk.Window() webView = WebKit.WebView() window.add(webView) window.show_all() #webView.load_uri('http://www.google.com') # Here it works on main thread self.window = window self.webView = webView def run(self): Gtk.main() def show_html(self): print 'show html' time.sleep(1) print 'after sleep' # Update widget in main thread GLib.idle_add(self.webView.load_uri, 'http://www.google.com') # Here it doesn't work app = App() thread = threading.Thread(target=app.show_html) thread.start() app.run() Gtk.main() 
+6
source

Source: https://habr.com/ru/post/918275/


All Articles