Поскольку Роуинг еще не принял свой собственный ответ, я опубликую его, чтобы получить его в верхней части страницы с вопросами без ответа, и чтобы помочь любому, кто скинет это с помощью переходов в поисковой системе, предоставив исчерпывающий ответ. (Rawing, не стесняйтесь опубликовать свой ответ, все же.)
В вашем коде вы объявляете окно как Window (), а не как gtk.Window. Если вы строите в одном окне, вам не нужно делать это каждый раз. Создайте окно один раз, добавьте к нему то, что вам нужно. Если вам нужны дополнительные окна, объявите их отдельно в этом модуле и вызовите их из кода (а не из основного).
Кроме того, не называйте ваши объекты "окном". в начале ... это становится слишком запутанным. Дайте ему простое имя, добавьте его там, где вам это нужно. 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 должен автоматически обновлять картинку.