# Image (Python)

Marta Maria Casetti
mmcasetti@gmail.com 2012
Sindhu S
sindhus@live.in 2014
Widget zobrazující obrázek

# Image

Tato GtkApplication zobrazí soubor s obrázkem z aktuální složky.

V případě, že se soubor s obrázkem úspěšně nenačte, bude obrázek obsahovat ikonu „poškozený obrázek“. Aby tento program fungoval, musí se název_souboru.png nacházet v aktuální složce.

# Kód použitý k vygenerování tohoto příkladu

from gi.repository import Gtk import sys

class MyWindow(Gtk.ApplicationWindow): # Vytvoří okno

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

# Vytvoří obrázek image = Gtk.Image() # Nastaví obsah obrázku na gnome-image.png image.set_from_file("gnome-image.png") # Přidá obrázek do okna 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)

Jiným způsobem, jak získat to, co máme v tomto příkladu, je vytvořit obrázek jako instanci jiné třídy a jeho přidání do instance `MyWindow` v metodě `do_activate(self)`:

# Třída pro vytvoření okna class MyWindow(Gtk.ApplicationWindow): def __init__(self, app): Gtk.Window.__init__(self, title="Welcome to GNOME", application=app) self.set_default_size(300, 300)

# Třída pro vytvoření obrázku 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): # Vytvoří instanci MyWindow win = MyWindow(self) # Vytvoří instanci MyImage a přidá ji do okna win.add(MyImage()) # Zobrazí okno a vše v něm win.show_all()

Abyste mohli použít tento úryvek kódu, musíte přidat kód, který importuje `Gtk` a `GdkPixbuf` z `gi.repository` a řádky, které vytváří instanci okna `MyApplication`.

# Užitečné metody pro widget Image

Pro načtení obrázku ze sítě použijte `set_from_pixbuf(pixbuf)`, kde `pixbuf` je GdkPixbuf.

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

class MyWindow(Gtk.ApplicationWindow): # Vytvoření okna def __init__(self, app): Gtk.Window.__init__(self, title="Welcome to GNOME", application=app) self.set_default_size(300, 300)

# Vytvoření pixbuf ze souboru filename="gnome-image.png" s šířkou width=32 # a výškou height=64 a s preserve_aspect_ratio=False. pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale("gnome-image.png", 64, 128, False)

# Vytvoření obrázku image = Gtk.Image() # Nastavení obsahu obrázku z pixbuf image.set_from_pixbuf(pixbuf) # Přidání obrázku do okna self.add(image)

Pokud je `preserve_aspect_ratio=True` můžeme použít `new_from_file_at_size(název_souboru, šířka, výška)`. Když je `šířka` nebo `výška` rovna `-1`, znamená to bez omezení.

Ohledně načtení ze vstupního datového proudu se podívejte do dokumentace na `new_from_stream()` a `new_from_stream_at_scale()`.

# Odkazy k API

V této ukázce se používá následující:

GtkImage

GtkWindow