Python GTK + webkit - 在gtk.main()之后插入JavaScript

时间:2012-07-31 20:23:44

标签: python webkit gtk

我在终端尝试了这一切,一切正常,但如果我在内部脚本中运行,我就无法在gtk.main()

之后插入JavaScript
import gtk
import webkit

w = gtk.Window()
b = webkit.WebView()
w.add(b)
b.open('http://example.com')
w.show_all()

gtk.main() # this I don`t run inside terminal

#and after showing window I want to insert some JavaScript code

js = 'alert("a");'
b.execute_script(js)

如何解决这个问题?提前谢谢!

2 个答案:

答案 0 :(得分:5)

嗯,这个问题在GUI编程中实际上非常经典,因此它就是解决方案。直接操作(例如按下按钮)以及间接操作(webkit浏览器完成加载页面)需要始终启动位于不同进程或不同线程上的操作(函数)。

在这种情况下,您可以使用"load-finished"对象webkit提供的b事件。

网页完成加载后,相关功能将启动执行JS代码。这就是代码的样子:

def load_finished(webview, frame):
    js = 'alert("a");'
    b.execute_script(js)

b = webkit.WebView()
b.connect("load-finished", load_finished)

答案 1 :(得分:0)

gtk.main()将阻塞,直到它收到一个gtk.main_quit()被调用或其他类似的退出调用。害怕你必须使用回调或在调用gtk.main()之前进行所有javascript插入。

很惊讶你设法运行gtk.main()而没有阻塞,直到你在终端上按Ctrl + C..