我在使用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”, 但如果我运行该项目,程序启动时没有编译问题。这是正常的吗?
答案 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
这样的暂停)。