# Image (Python)

Marta Maria Casetti
mmcasetti@gmail.com 2012
Sindhu S
sindhus@live.in 2014
Un widget que muestra una imagen
Daniel Mustieles
daniel.mustieles@gmail.com 2011 - 2020
Nicolás Satragno
nsatragno@gmail.com 2012 - 2013
Jorge González
jorgegonz@svn.gnome.org 2011

# Image

Esta GtkApplication muestra una archivo de imagen de la carpeta actual.

Si el archivo de imagen no se carga correctamente, la imagen tendrá un icono de «imagen rota». El archivo nombre_archivo.png debe estar en la carpeta actual para que este código funcione.

# Código usado para generar este ejemplo

from gi.repository import Gtk import sys

class MyWindow(Gtk.ApplicationWindow): # create a window

def __init__(self, app): Gtk.Window.__init__(self, title="Welcome to GNOME", application=app) self.set_default_size(300, 300)

# create an image image = Gtk.Image() # set the content of the image as the file filename.png image.set_from_file("gnome-image.png") # add the image to the window self.add(image)

class MyApplication(Gtk.Application):

def __init__(self): Gtk.Application.__init__(self)

def do_activate(self): win = MyWindow(self) win.show_all()

def do_startup(self): Gtk.Application.do_startup(self)

app = MyApplication() exit_status = app.run(sys.argv) sys.exit(exit_status)

Otra manera de obtener lo que se tiene en el ejemplo es crear la imagen como una instancia de otra clase y añadírsela a la instancia de `MyWindow` en el método `do_activate(self)`:

# a class to create a window class MyWindow(Gtk.ApplicationWindow): def __init__(self, app): Gtk.Window.__init__(self, title="Welcome to GNOME", application=app) self.set_default_size(300, 300)

# a class to create an image class MyImage(Gtk.Image): def __init__(self): Gtk.Image.__init__(self) self.set_from_file("gnome-image.png")

class MyApplication(Gtk.Application): def __init__(self): Gtk.Application.__init__(self)

def do_activate(self): # create an instance of MyWindow win = MyWindow(self) # create an instance of MyImage and add it to the window win.add(MyImage()) # show the window and everything on it win.show_all()

Para usar este fragmento de código necesitará aádir el código que importa `Gtk` y `GdkPixbuf` desde `gi.repository` y las líneas que crean una instancia de la ventana `MyApplication`.

# Métodos útiles para un widget «Image»

Para cargar una imagen por red, use `set_from_pixbuf(pixbuf)`, donde `pixbuf` es un GdkPixbuf.

from gi.repository import Gtk from gi.repository import GdkPixbuf import sys

class MyWindow(Gtk.ApplicationWindow): # create a window def __init__(self, app): Gtk.Window.__init__(self, title="Welcome to GNOME", application=app) self.set_default_size(300, 300)

# create a pixbuf from file filename="gnome-image.png", with width=32 # and height=64 amd boolean preserve_aspect_ratio=False. pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale("gnome-image.png", 64, 128, False)

# create an image image = Gtk.Image() # set the content of the image as the pixbuf image.set_from_pixbuf(pixbuf) # add the image to the window self.add(image)

Si `preserve_aspect_ratio=True` puede usar `new_from_file_at_size(nombre_archivo, anchura, altura)`. Si `anchura` o `altura` son `-1`, no se restringen.

Para cargar de un flujo de entrada, consulte `new_from_stream()` y `new_from_stream_at_scale()` en la documentación.

# Referencias de la API

En este ejemplo se usa lo siguiente:

GtkImage

GtkWindow