6
Estoy tratando de cargar una vista de webkit en un hilo diferente al hilo principal de gtk.Webkit threads with PyGObject en Gtk3
que ver el ejemplo PyGTK, Threads and WebKit
que modificar ligeramente para PyGObject apoyo y 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()
El resultado es una ventana vacía y "después de dormir" impresión nunca se ejecuta. La llamada idle_add no funciona. La única parte de trabajo es la llamada comentada en el hilo principal.