Carregue e mostre uma imagem da web em Python com o Gtk 3?

0

Estou escrevendo um aplicativo no Ubuntu 12.04 com Python e GTK 3. O problema que tenho é que não consigo descobrir como devo fazer para mostrar um Gtk.Image no meu aplicativo com um arquivo de imagem da web .

Isso é o mais importante que eu vim:

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))

Acho que tudo está correto, exceto a última linha.

    
por Daniel Jonsson 18.07.2012 / 23:42

1 resposta

2

De acordo com os docs , new_from_stream() precisa de Gio.InputStream e Gio.Cancellable como argumentos.

Você também pode salvar a imagem no disco e removê-la quando necessário. Aqui está um exemplo muito básico:

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

Você deve escrever para um local melhor, talvez / tmp ou um diretório especificado pelo usuário.

    
por Timo 19.07.2012 / 00:20