7. Label¶
Etiketter är huvudmetoden för att placera ej redigerbar text i fönster, exempelvis för att placera en titel intill en Gtk.Entry
-komponent. Du kan ange texten i konstruktorn, eller senare med metoderna Gtk.Label.set_text()
eller Gtk.Label.set_markup()
.
Bredden på etiketten kommer justeras automatiskt. Du kan skapa etiketter med flera rader genom att stoppa nyrader (”\n”) i etikettsträngen.
Etiketter kan göras markerbara med Gtk.Label.set_selectable()
. Markerbara etiketter låter användaren kopiera etikettinnehållet till urklipp. Endast etiketter som innehåller information som är användbar att kopiera — så som felmeddelanden — bör göras markerbara.
Etikettexten kan justeras med metoden Gtk.Label.set_justify()
. Komponenten kan också radbryta, vilket kan aktiveras med Gtk.Label.set_line_wrap()
.
Gtk.Label
stöder viss enkel formatering, exempelvis låter den dig göra text fet, färgad eller större. Du kan göra detta genom att tillhandahålla en sträng till Gtk.Label.set_markup()
, med Pango Markup-syntaxen 1. Exempelvis <b>fet text</b> och <s>genomstruken text</s>
. Dessutom stöder Gtk.Label
klickbara hyperlänkar. Markup för länkar har lånats från HTML, och använder ”a” med attributen href och title. GTK+ renderar länkar liknande hur de visas i webbläsare, med färgad, understruken text. Attributet title visas som en inforuta över länken.
label.set_markup("Go to <a href=\"https://www.gtk.org\" "
"title=\"Our website\">GTK+ website</a> for more")
Etiketter kan innehålla snabbtangenter. Snabbtangenter är understrukna tecken i etiketten, använda för tangentbordsnavigering. Snabbtangenter skapas genom att tillhandahålla en sträng med ett understreck innan tecknet för snabbtangenten, så som ”_Arkiv”, till funktionerna Gtk.Label.new_with_mnemonic()
eller Gtk.Label.set_text_with_mnemonic()
. Snabbtangenter aktiverar automatiskt alla aktiverbara komponenter som etiketten är i, så som en Gtk.Button
; om etiketten inte är inuti snabbtangentens målkomponent, så kommer du behöva säga till etiketten om målet med Gtk.Label.set_mnemonic_widget()
.
7.1. Exempel¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk class LabelWindow(Gtk.Window): def __init__(self): super().__init__(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(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( 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( 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) label.set_max_width_chars(32) vbox_right.pack_start(label, True, True, 0) label = Gtk.Label( 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) label.set_max_width_chars(32) 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="https://www.gtk.org" ' 'title="Click to find out more">internets</a>.' ) label.set_line_wrap(True) label.set_max_width_chars(48) 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("destroy", Gtk.main_quit) window.show_all() Gtk.main() |
- 1
Pango Markup Syntax, https://docs.gtk.org/Pango/pango_markup.html