PyGtk:在window的main()方法之后改变图像?

时间:2011-06-25 11:58:17

标签: pygtk python-2.6

我正在使用gtk.Image小部件在gtk窗口中显示图片。我可以在调用window.main()之前设置要显示的图像,但在我完成之后图像将不再更改。基本上是:

import pygtk
pygtk.require('2.0')
import gtk

(...)

window= Window()
window.canvas= gtk.Image()
window.window.add(sprite.window.canvas)
window.canvas.show()
window.canvas.set_from_file("pic1.gif")
window.main()
window.canvas.set_from_file("pic2.gif")
将显示

pic1.gif。是否有正确的方式来更改图像(我不在乎是否必须使用除gtk.Image之外的小部件)?我能想到的就是摧毁窗户并创造一个新窗口。

编辑: 我意识到我的错误......我为每个窗口调用了window.main(),并且调用了gtk.main_quit()的任何窗口的destroy事件。不得不做一些调整,但它现在有效。甚至在调用window.main()之后:)

1 个答案:

答案 0 :(得分:1)

由于Rawing还没有接受他自己的答案,我会发布它以使其脱离未解答问题页面的顶部,并通过提供全面的答案帮助任何人从搜索引擎点击中浏览这些内容。 (Rawing,你可以自己发布你的答案,也一样。)

在您的代码中,您将窗口声明为Window(),而不是gtk.Window。如果您在一个窗口中构建,则不应每次都这样做。创建一次窗口,添加您需要的窗口。如果您需要其他窗口,请在此模块中单独声明它们,并从代码(而不是从main)调用它们。

此外,请勿使用“窗口”命名对象。在开始......这只是过于混乱。给它一个简单的名称,将其添加到您需要的地方。 Python将完成剩下的工作。

上面代码的清理版本可能如下所示:

window = gtk.Window()
#You may need additional arguments above, such as to make it top level.

canvas = gtk.Image()
window.add(canvas)
canvas.show()
canvas.set_from_file("pic1.gif")

现在,只需更改事件或其他“def”中的图像,如下所示:

def ChangePicture():
   canvas.set_from_file("pic2.gif")

Canvas应自动更新图片。