python控制台和python脚本之间的不同行为

时间:2012-11-24 13:51:51

标签: python console gtk pydev

我在使用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标记:“unresolved import:gtk”, 但如果我运行该项目,程序启动时没有编译问题。这是正常的吗?

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:1)

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

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

祝你好运!