2012-12-18 6 views
0

gtk.Image()에 이상한 문제가 있습니다. 간단한 질문; 이미지를 업데이트하는 방법? 창 만들기에서 이미지를 만들고 포장합니다 ... 그 시간에 디스크에서 이미지를로드합니다. 이제 url에서 이미지를 다운로드하기 시작합니다. 완료되면 기존 이미지를 새로운 이미지로 바꾸기를 원합니다. 그때 디스크에 동일한 파일의 내용을 다시 작성이 수행 내가 self._user_avatar.set_from_file (IMAGE_PATH) 및 self._user_avatar.clear을 시도pygtk gtk.Image를 업데이트하는 방법

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

() 아무것도 작동하지 않습니다. 앱을 다시 시작하면 새로운 이미지가 나타나고 모든 것이 정상입니다.

답변

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