У меня возникли проблемы при попытке вызвать функции webkit из дочернего процесса. Этот код предназначен для загрузки фоновых ресурсов и асинхронной вставки их с помощью JavaScript. Мне нужно вызывать функции javascript, как только ресурс загружен, в то время как интерфейс работает. Я пытался синхронизировать потоки по каналам, но опрос while (1) в основном потоке (для чтения канала) блокирует интерфейс так же, как если бы ресурс был загружен в основной поток. Если я перезвоню webview.execute_script с помощью javascript из дочернего процесса, он ничего не делает, кроме случаев, когда я передаю его с предупреждением, подобным funcion, а затем прерывается: S
Пример:
import pygtk
pygtk.require("2.0")
import gtk,webkit,os
class Browser:
def __init__(self):
self.window = gtk.Window()
#self.window.set_decorated(False)
self.window.set_default_size(800, 600)
vbox = gtk.VBox()
self.scroll_window = gtk.ScrolledWindow()
self.webview = webkit.WebView()
self.webview.set_transparent(True)
self.window.add(self.webview)
self.window.show_all()
self.webview.load_uri("http://google.es");
self.error();
def error(self):
child_pid = os.fork()
if child_pid == 0:
self.webview.execute_script("""
alert(1);
""")
os._exit(0)
def noerror(self):
self.webview.execute_script("""
alert(1);
""")
if __name__ == "__main__":
browser = Browser()
try:
while True:
gtk.main_iteration()
except:
gtk.main_quit()
print "BAILING OUT!"
Заранее спасибо!