2012-12-18 98 views
0

我有gtk.Image()非常奇怪的問題。簡單的問題;如何更新圖像? 在窗口創建時,我創建圖像並將其打包......當時我從磁盤加載圖像。現在我開始從url下載圖片,完成後我只想用新的圖片替換現有的圖片。我重寫磁盤上的同一個文件的內容,然後做:pygtk如何更新gtk.Image

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() 沒有什麼作品。當我重新啓動應用程序有一個新的形象,一切都很好。

回答

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

感謝,這正是我需要的。你的例子工作正常,所以在我的代碼中有一些問題。無論如何,謝謝你。 – bradojevic