Una etiqueta sencilla
from gi.repository import Gtk
import sys
class MyWindow(Gtk.ApplicationWindow):
# constructor for a Gtk.ApplicationWindow
def __init__(self, app):
Gtk.Window.__init__(self, title="Welcome to GNOME", application=app)
self.set_default_size(200, 100)
# create a label
label = Gtk.Label()
# set the text of the label
label.set_text("Hello GNOME!")
# add the label to the window
self.add(label)
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 etiqueta como una instancia de otra clase y añadirle la instancia de MyWindow
en el método do_activate(self)
:
Las líneas de texto resaltadas indican que el código es diferente al del fragmento anterior.
# a class to define a window
class MyWindow(Gtk.ApplicationWindow):
def __init__(self, app):
Gtk.Window.__init__(self, title="Welcome to GNOME", application=app)
self.set_default_size(200, 100)
# a class to define a label
class MyLabel(Gtk.Label):
def __init__(self):
Gtk.Label.__init__(self)
self.set_text("Hello GNOME!")
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 MyLabel
label = MyLabel()
# and add it to the window
win.add(label)
# show the window and everything on it
win.show_all()
Puede encontrar una explicación de cómo trabajar con cadenas en GTK+ en la .
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 de las líneas en el texto de la etiqueta respecto de sí. El método no tiene efecto en una etiqueta de una sola línea.
Para decorar el texto se puede usar set_markup("texto")
, donde "texto"
es un texto en el lenguaje de marcación Pango. Un ejemplo:
label.set_markup("Text can be <small>small</small>, <big>big</big>, "
"<b>bold</b>, <i>italic</i> and even point to somewhere "
"on the <a href=\"http://www.gtk.org\" "
"title=\"Click to find out more\">internet</a>.")
En este ejemplo se usa lo siguiente:
GtkLabel
GtkWindow