Incrustando una imagen en la ventana
De una primera forma... En la que se crea una imagen desde un fichero como un objeto y se añade a la ventana. GtkImage# -*- coding: utf-8 -*- from gi.repository import Gtk import sys # Una ApplicationWindow GTK class miventana(Gtk.ApplicationWindow): # Constructor de ApplicationWindow def __init__(self, app): Gtk.Window.__init__(self, title="Welcome to GNOME", application=app) # también puede venir aquí win.show_all() self.set_default_size(800,800) # Crear una imagen image = Gtk.Image() # Obtenerla desde un fichero image.set_from_file("coche.png") # añadirla a la ventana. self.add(image) class miaplicacion(Gtk.Application): # Constructor de Gtk.Application def __init__(self): Gtk.Application.__init__(self) # al activarse la aplicación, crea un objeto miventana. # Paso la aplicación "self" como argumento. def do_activate(self): win = miventana(self) # Muestra la ventana win.show_all() # hacer un startup def do_startup(self): Gtk.Application.do_startup(self) # al igual que antes se crea y se ejecuta la aplicación app = miaplicacion() exit_status = app.run(sys.argv) sys.exit(exit_status)
= = =
De otra forma, definiendo la imagen como una clase.
# -*- coding: utf-8 -*- from gi.repository import Gtk import sys # Una Imagen como clase class miimagen(Gtk.Image): def __init__(self): Gtk.Image.__init__(self) self.set_from_file("coche.png") # Una ApplicationWindow GTK class miventana(Gtk.ApplicationWindow): # Constructor de ApplicationWindow def __init__(self,app): Gtk.Window.__init__(self, title="Welcome to GNOME", application=app) # también puede venir aquí win.show_all() self.set_default_size(800,800) class miaplicacion(Gtk.Application): # Constructor de Gtk.Application def __init__(self): Gtk.Application.__init__(self) # al activarse la aplicación, crea un objeto miventana. # Paso la aplicación "self" como argumento. def do_activate(self): win = miventana(self) # añade la imagen win.add(miimagen()) # Muestra la ventana win.show_all() # hacer un startup def do_startup(self): Gtk.Application.do_startup(self) # al igual que antes se crea y se ejecuta la aplicación app = miaplicacion() exit_status = app.run(sys.argv) sys.exit(exit_status)
= = =
Etiquetas
Según la documentación GTK usa en Python cadenas str codificadas en utf-8. Ver apartado Unicode en GTK+El siguiente código ilustra las dos formas de llamar a una etiqueta, como una clase o directamente como una instancia de la clase Gtk.Label. Son métodos que no se pueden usar a la vez, por eso uno está comentado.
# -*- coding: utf-8 -*-
from gi.repository import Gtk
import sys
"""
#Poner una etiqueta como clase
class mietiqueta(Gtk.Label):
def __init__(self):
Gtk.Label.__init__(self)
self.set_text("¡Hola, soy una etiqueta con clase")"""
# Una ApplicationWindow GTK
class miventana(Gtk.ApplicationWindow):
# Constructor de ApplicationWindow
def __init__(self,app):
Gtk.Window.__init__(self, title="Welcome to GNOME", application=app)
# también puede venir aquí win.show_all()
self.set_default_size(800,800)
# Quitar este ejemplo si se quiere
# comprobar como se hace con una clase
# =======================
# Otra etiqueta sin clase
# =======================
label2 = Gtk.Label()
label2.set_text("Soy una etiqueta sin clase")
self.add(label2)
# =======================
class miaplicacion(Gtk.Application):
# Constructor de Gtk.Application
def __init__(self):
Gtk.Application.__init__(self)
# al activarse la aplicación, crea un objeto miventana.
# Paso la aplicación "self" como argumento.
def do_activate(self):
win = miventana(self)
# añade la imagen
""" win.add(mietiqueta()) """
# Muestra la ventana
win.show_all()
# hacer un startup
def do_startup(self):
Gtk.Application.do_startup(self)
# al igual que antes se crea y se ejecuta la aplicación
app = miaplicacion()
exit_status = app.run(sys.argv)
sys.exit(exit_status)
= = =
Otros métodos son los siguientes:
- set_line_wrap(True) rompe líneas si el texto de la etiqueta excede el tamaño del widget.
- set_justify(Gtk.Justification.LEFT) (o Gtk.Justification.RIGHT, Gtk.Justification.CENTER, Gtk.Justification.FILL) establece la alineación en etiquetas con más de una línea
- Para decorar el texto se puede usar set_markup("texto"), donde "texto" es un texto en el lenguaje de marcación Pango.
... def __init__(self,app): Gtk.Window.__init__(self, title="Welcome to GNOME", application=app) # también puede venir aquí win.show_all() self.set_default_size(100,100) # Quitar este ejemplo si se quiere # comprobar como se hace con una clase # ======================= # Otra etiqueta sin clase # ======================= label2 = Gtk.Label() label2.set_text("Este es un texto muy largo, tan largo que creo que no cabrá en el widget ventana") label2.set_line_wrap(True) label2.set_justify(Gtk.Justification.CENTER) # label2.set_markup("<b>Texto</b> en varios <small>tamaños</small> o <span foreground='darkred' background='peru'>en color</span>") self.add(label2) # ======================= ...
= = =
No hay comentarios:
Publicar un comentario