0

我对 gtk.Image() 有一个非常奇怪的问题。简单的问题;如何更新图像?在创建窗口时,我创建图像并打包它……那时我从磁盘加载图像。现在我开始从 url 下载图像,完成后我只想用新图像替换现有图像。我重写磁盘上相同文件的内容,然后执行:

    pixbuf = gtk.gdk.pixbuf_new_from_file(image_path)
    self._user_avatar.set_from_pixbuf(pixbuf)

我试过 self._user_avatar.set_from_file(image_path) 和 self._user_avatar.clear() 没有任何效果。当我重新启动应用程序时,有一个新图像,一切正常。

4

1 回答 1

2

gtk.Image.set_from_pixbuf是正确的方法,所以你的问题可能来自别的东西。尝试使用最简单的代码来重现您的问题。

这是一个工作示例:

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

pics = []
clicks = 0

def on_destroy (widget):
    gtk.main_quit()
    return False

def on_button_clicked (widget, image):
    global clicks
    clicks += 1
    image.set_from_pixbuf (pics[clicks % len(pics)])

def create ():
    window = gtk.Window(gtk.WINDOW_TOPLEVEL)
    window.connect("destroy", on_destroy)

    pics.append (gtk.gdk.pixbuf_new_from_file("sample1.png"))
    pics.append (gtk.gdk.pixbuf_new_from_file("sample2.png"))

    image = gtk.Image()
    image.set_from_pixbuf(pics[0])

    button = gtk.Button ("Switch Image")
    button.connect("clicked", on_button_clicked, image)

    vbox = gtk.VBox()
    vbox.pack_start (image)
    vbox.pack_start (button)

    window.add(vbox)
    window.show_all()

if __name__ == "__main__":
    create()
    gtk.main()
于 2012-12-19T09:29:41.937 回答