0
我想下載圖片並用gtk.ProgressBar()
顯示進度。只有當gobject.idle_add()函數終止時纔有辦法繼續?
對於這一點,我用在PyGTK FAQ推薦的方法,它工作正常:
class MainInterface :
def __init__(self) :
...
thread.start_new_thread(self.getMap,())
gtk.gdk.threads_init()
gtk.gdk.threads_enter()
gtk.main()
gtk.gdk.threads_leave()
def getMap(self) :
...
getImage = self.getImages(new_img_list) # new_img_list is a list of image paths
gobject.idle_add(getImage.next)
def getImages(self, img_list) :
nb_img = len(img_list)
i = 1.0
for img in img_list :
self.progress_interface.progress_bar.set_fraction(i/nb_img)
gtk.gdk.threads_enter()
get_maps.download_image(img) # This function downloads the current image to the disk
gtk.gdk.threads_leave()
i += 1.0
yield True
self.progress_interface.progress_bar.set_text("Les images sont à jour")
self.progress_interface.progress_bar.set_fraction(1)
yield False
現在,我有一個ShowMap()
方法,從先前下載的圖像創建gtk.Pixbuf
。
因此,我想在new_img_list
下載所有圖像時(因此當getImage.next()
返回Falsè
時)將此ShowMap()
函數調用。
我該如何做到這一點?
感謝