5

我在使用 python 控制台和 python 脚本的同一代码上遇到了不同的行为。

代码如下:

import gtk
import webkit
win = gtk.Window()
win.show()
web = webkit.WebView()
win.add(web)
web.show()
web.open("http://www.google.com")

在 python 控制台中运行代码时,输​​出是一个包含 google 主页的新框架。

将代码作为脚本运行时,结果是空帧。它关闭得非常快,但即使我使用延迟功能,webkit 也不会添加到框架中。

这怎么可能?

此外,使用 PyDev IDE 它会标记:“未解析的导入:gtk”,但如果我运行该项目,程序启动时不会出现编译问题。正常吗?

4

2 回答 2

8

添加

gtk.main()

到你的脚本的末尾。这将启动gtk事件循环。


import gtk
import webkit

class App(object):
    def __init__(self):
        win = gtk.Window()
        win.connect("destroy", self.destroy)
        web = webkit.WebView()
        web.open("http://www.google.com")
        win.add(web)
        web.show()
        win.show()
    def destroy(self, widget, data = None):
        gtk.main_quit()
app = App()
gtk.main()
于 2012-11-24T14:04:25.573 回答
1

我的猜测是控制台保持 python 会话打开,而在脚本结束时程序关闭。当脚本关闭时,它会使用它创建的所有内容。

测试这个理论的东西:如果你在控制台中输入“exit”,你会看到界面以同样的方式关闭吗?raw_input如果是这样,请考虑一些允许脚本保持打开状态的代码(例如,a 之类的暂停)。

祝你好运!

于 2012-11-24T14:00:20.430 回答