【问题标题】:pygtk how to update gtk.Imagepygtk 如何更新 gtk.Image
【发布时间】:2012-12-18 18:11:33
【问题描述】:

我对 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() 没有任何效果。当我重新启动应用程序时,有一个新图像,一切正常。

【问题讨论】:

    标签: python gtk pygtk gtk2


    【解决方案1】:

    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()
    

    【讨论】:

    • 谢谢,这正是我所需要的。您的示例运行良好,因此我的代码中有一些问题。无论如何,谢谢伙计。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多