Python GTK+;webkit-在gtk.main()之后插入JavaScript
我在终端中尝试了这个,一切都正常,但如果我在脚本中运行这个脚本,我就不能在gtk.main()之后插入JavaScript 如何解决这个问题?提前谢谢 gtk.main()将阻塞,直到它收到一个gtk.main_quit()调用或其他类似的退出调用。恐怕您必须使用回调或在调用gtk.main()之前完成所有javascript插入Python GTK+;webkit-在gtk.main()之后插入JavaScript,python,webkit,gtk,Python,Webkit,Gtk,我在终端中尝试了这个,一切都正常,但如果我在脚本中运行这个脚本,我就不能在gtk.main()之后插入JavaScript 如何解决这个问题?提前谢谢 gtk.main()将阻塞,直到它收到一个gtk.main_quit()调用或其他类似的退出调用。恐怕您必须使用回调或在调用gtk.main()之前完成所有javascript插入 令人惊讶的是,在终端中点击Ctrl+C之前,您成功地运行了gtk.main(),而没有阻塞它。这个问题实际上在GUI编程中非常经典,因此它是解决方案。直接操作(例如按
令人惊讶的是,在终端中点击Ctrl+C之前,您成功地运行了gtk.main(),而没有阻塞它。这个问题实际上在GUI编程中非常经典,因此它是解决方案。直接操作(例如按下按钮)和间接操作(webkit浏览器完成加载页面)始终需要启动位于不同进程或不同线程上的操作(功能) 在这种情况下,您可以使用
webkit
对象b
提供的事件“load finished”
网页加载完成后,相关函数将启动,执行JS代码。这是代码的样子:
def load_finished(webview, frame):
js = 'alert("a");'
b.execute_script(js)
b = webkit.WebView()
b.connect("load-finished", load_finished)
紧跟其后的是gtk.main()。很好的回答和例子。法布里齐奥,谢谢!如果我想在文档中插入js,这是可行的。如果存在JavaScript代码,例如body onload,该怎么办?加载完成事件时,在插入js后执行默认js函数。在本例中,第一个js将发出bi警报('a'),然后加载到body上。可能我需要James Hurford建议的回调方法,但我的Python知识不太好。。可能我必须实现线程和回调。。。再次感谢你们两位。或者你们可以使用一个计时器,我相信gtk附带了一个计时器,或者它可能是油嘴滑舌的,这将避免线程的并发问题。这真的取决于你想做什么。
def load_finished(webview, frame):
js = 'alert("a");'
b.execute_script(js)
b = webkit.WebView()
b.connect("load-finished", load_finished)