GTK3 label

logo4

Le label (etichette) sono il metodo principale per inserire un testo in una finestra. Il testo può essere definito nel costruttore o successivamente con Gtk.Label.set_text() o Gtk.Label.srt_markup().
La dimensione della label è automatica, e si può usare “\n” per andare a capo.

Il testo della label può essere reso copiabile nella clipboard con Gtk.Label.set_selectable(). Si può usare Gtk.Label.set_justify() e Gtk.Label.set_line_wrap().

Il testo può essere taroccato in bold, colorato, etc con il Pango Markup syntax.

Le label possono contenere mnemonics, stringhe usate per la navigazione, come i pulsanti (vedi esempio). Vengono attivati con Gtk.Label.new_with_mnemonic() o Gtk.Label.set_text_with_mnemonic().

Per casi più pasticciati c’è Gtk.Label.set_mnemonic_widget().

class Gtk.Label([text])
crea una label; se il testo è omesso viene creata vuota.

static new_with_mnemonic(text)
crea una label con dentro il testo. Se una parola inizia con _ viene sottolineata e la prima lettera rappresenta la scorciatoia da tastiera. Per inserire un _ occorre digitarne due.

set_justify(justification)
per la giustificazione solo per label di più linee; può essere Gtk.Justification.LEFT, Gtk.Justification.RIGHT, Gtk.Justification.CENTER o Gtk.Justification.FILL.

set_line_wrap(wrap)
se wrap è True il testo viene passato a Pango; se è False il testo viene tagliato se troppo lungo.

set_markup(markup)
per Pango.

set_mnemonic_widget(widget)
associa la label a un widget.

set_selectable(selectable)
permette di copiare il testo nella clipboard.

set_text(text)
inserisce text nella label.

set_text_with_mnemonic(text)
idem, con mnemonics

Esempio (lab.py):

#!/usr/bin/python3

#lab.py

from gi.repository import Gtk

class LabelWindow(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="Label Example")

        hbox = Gtk.Box(spacing=10)
        hbox.set_homogeneous(False)
        vbox_left = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10)
        vbox_left.set_homogeneous(False)
        vbox_right = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10)
        vbox_right.set_homogeneous(False)

        hbox.pack_start(vbox_left, True, True, 0)
        hbox.pack_start(vbox_right, True, True, 0)

        label = Gtk.Label("This is a normal label")
        vbox_left.pack_start(label, True, True, 0)

        label = Gtk.Label()
        label.set_text("This is a left-justified label.\nWith multiple lines.")
        label.set_justify(Gtk.Justification.LEFT)
        vbox_left.pack_start(label, True, True, 0)

        label = Gtk.Label(
            "This is a right-justified label.\nWith multiple lines.")
        label.set_justify(Gtk.Justification.RIGHT)
        vbox_left.pack_start(label, True, True, 0)

        label = Gtk.Label("This is an example of a line-wrapped label.  It "
                          "should not be taking up the entire             "
                          "width allocated to it, but automatically "
                          "wraps the words to fit.\n"
                          "     It supports multiple paragraphs correctly, "
                          "and  correctly   adds "
                          "many          extra  spaces. ")
        label.set_line_wrap(True)
        vbox_right.pack_start(label, True, True, 0)

        label = Gtk.Label("This is an example of a line-wrapped, filled label. "
                          "It should be taking "
                          "up the entire              width allocated to it.  "
                          "Here is a sentence to prove "
                          "my point.  Here is another sentence. "
                          "Here comes the sun, do de do de do.\n"
                          "    This is a new paragraph.\n"
                          "    This is another newer, longer, better "
                          "paragraph.  It is coming to an end, "
                          "unfortunately.")
        label.set_line_wrap(True)
        label.set_justify(Gtk.Justification.FILL)
        vbox_right.pack_start(label, True, True, 0)

        label = Gtk.Label()
        label.set_markup("Text can be <small>small</small>, <big>big</big>, "
                         "<b>bold</b>, <i>italic</i> and even point to "
                         "somewhere in the <a href=\"http://www.gtk.org\" "
                         "title=\"Click to find out more\">internets</a>.")
        label.set_line_wrap(True)
        vbox_left.pack_start(label, True, True, 0)

        label = Gtk.Label.new_with_mnemonic(
            "_Press Alt + P to select button to the right")
        vbox_left.pack_start(label, True, True, 0)
        label.set_selectable(True)

        button = Gtk.Button(label="Click at your own risk")
        label.set_mnemonic_widget(button)
        vbox_right.pack_start(button, True, True, 0)

        self.add(hbox)

window = LabelWindow()
window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main()

lab

Annunci
Post a comment or leave a trackback: Trackback URL.

Commenti

  • medeoTL (@medeoTL)  On 4 marzo 2014 at 18:48

    sapete se è possibile modificare al volo il markup di una label? qualcosa tipo
    lbl = Gtk.Lable(“medeo”)


    lbl.set_markup(color=blue, text=bold)

    • juhan  On 6 marzo 2014 at 09:24

      Non so se ho capito la domanda, qualcosa come questo:

      class MyWindow(Gtk.Window):
      
          def __init__(self):
              Gtk.Window.__init__(self, title="Hello World")
              self.set_border_width(20)
              self.box = Gtk.Box(spacing=20, orientation=Gtk.Orientation.VERTICAL)
              self.add(self.box)
      
              self.label = Gtk.Label()
              self.label.set_text("io sono la 'tiketta")
              self.box.pack_start(self.label, True, True, 0)
              self.button = Gtk.Button(label="Click")
              self.button.connect("clicked", self.on_button_clicked)
              self.box.pack_start(self.button, True, True, 0)
              
          def on_button_clicked(self, widget):
              self.label.set_text("ecco!")
              
      win = MyWindow()
      win.connect("delete-event", Gtk.main_quit)
      win.show_all()
      Gtk.main()
      

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: