Я пишу приложение на Ubuntu 12.04 с Python и GTK 3. У меня проблема в том, что я не могу понять, как мне сделать, чтобы показать Gtk.Image в моем приложении с файлом изображения из Интернета. .
Это насколько я дошел:
from gi.repository import Gtk
from gi.repository.GdkPixbuf import Pixbuf
import urllib2
url = 'http://lolcat.com/images/lolcats/1338.jpg'
response = urllib2.urlopen(url)
image = Gtk.Image()
image.set_from_pixbuf(Pixbuf.new_from_stream(response))
Я думаю, что все правильно, кроме последней строки.
Согласно документам , new_from_stream()
нужны Gio.InputStream
и Gio.Cancellable
в качестве аргументов.
Вы также можете сохранить изображение на диск и удалить при необходимости. Вот очень простой пример:
import os
import urllib2
from gi.repository import Gtk
from gi.repository.GdkPixbuf import Pixbuf
def quit_event(widget, event):
os.remove(imgname)
Gtk.main_quit()
imgname = '1338.jpg'
url = 'http://lolcat.com/images/lolcats/'+imgname
response = urllib2.urlopen(url)
with open(imgname, 'wb') as img:
img.write(response.read())
image = Gtk.Image()
pb = Pixbuf.new_from_file(imgname)
image.set_from_pixbuf(pb)
window = Gtk.Window()
window.connect('delete-event', quit_event)
window.add(image)
window.show_all()
Gtk.main()
Вы должны написать в лучшее место, хотя, возможно, / tmp или указанный пользователем каталог.