1
我有一些麻煩試圖從子進程回調webkit函數。此代碼旨在加載背景資源並通過javascript異步插入它們。一旦資源被加載,我需要回調JavaScript函數,同時保持接口的工作。我嘗試通過管道同步線程,但主線程中的while(1)輪詢(讀取管道)以與資源在主文件中加載相同的方式阻塞了該接口。如果我從子進程回調的webview.execute_script用JavaScript它什麼都不做,除了當我像funcion警報餵養它,然後打破:SPython + webkit + os.fork()
爲例進行說明:
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!"
提前感謝!
哦!我明白了,是有交際的那doent需要輪詢蟒蛇線程之間的任何方法?問題是我是Python的新手。我在javascript中尋找事件監聽器之類的東西,所以我可以聲明一個監聽器,在一個線程中做一些事情,並在main中調用監聽器。那可能嗎?非常感謝 – 2011-06-07 12:51:42