Python pygtk如何更新gtk.Image
我对gtk.Image()有一个非常奇怪的问题。简单问题;如何更新图像? 在创建窗口时,我创建映像并打包…在那个时,我从磁盘加载映像。现在我开始从url下载图像,当下载完成后,我只想用新图像替换现有图像。我在磁盘上重写同一文件的内容,然后执行以下操作:Python pygtk如何更新gtk.Image,python,gtk,pygtk,gtk2,Python,Gtk,Pygtk,Gtk2,我对gtk.Image()有一个非常奇怪的问题。简单问题;如何更新图像? 在创建窗口时,我创建映像并打包…在那个时,我从磁盘加载映像。现在我开始从url下载图像,当下载完成后,我只想用新图像替换现有图像。我在磁盘上重写同一文件的内容,然后执行以下操作: pixbuf = gtk.gdk.pixbuf_new_from_file(image_path) self._user_avatar.set_from_pixbuf(pixbuf) 我试过了 self.\u user\u av
pixbuf = gtk.gdk.pixbuf_new_from_file(image_path)
self._user_avatar.set_from_pixbuf(pixbuf)
我试过了
self.\u user\u avatar.set\u from\u文件(图像路径)
和
self.\u user\u avatar.clear()
什么都不管用。当我重新启动应用程序时,会出现一个新图像,一切正常。是正确的方法,因此您的问题可能来自其他方面。试着用最简单的代码重现你的问题
以下是一个工作示例:
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()
谢谢,这正是我需要的。您的示例运行得很好,所以我的代码中有一些东西可以解决这个问题。无论如何,谢谢你。