标签Label

标签是在窗口中显示不可编辑文本的主要方法,例如要在 Gtk.Entry 控件旁边放置一个标题。 你可以在构造函数中指定文本的内容,也可以在后面调用 Gtk.Label.set_text()Gtk.Label.set_markup() 方法设置。

标签的宽度会自动调整。你可以把换行符(“\n”)放在标签内容中来产生一个多行的标签。

标签可以通过 Gtk.Label.set_selectable() 设置为可以选择。可选择的标签允许用户拷贝标签的内容到剪贴板。 一般只有包含需要拷贝的内容——如错误信息时才设置标签为可选择的。

标签文本可以通过 Gtk.Label.set_justify() 方法来设置对齐方式。当然你可以自动换行——只要调用 Gtk.Label.set_line_wrap()

Gtk.Label 支持一种简单的格式,例如允许你使某些文本显示为粗体、某种颜色或者更大号。 你可以通过使用 Gtk.Label.set_markup() 设置标签内容来实现这些效果, 这个函数使用Pango标记语言的语法 [1] 。例如, <b>bold text</b> and <s>strikethrough text</s> 。 另外, Gtk.Label 也支持可以点开的超链接。超链接的标记借用了HTML的方法,使用带有href和taitle属性的a标记。 GTK+呈现的超链接与浏览器中很相似——带有颜色和下划线。Title作为该链接的提示信息。

label.set_markup("Go to <a href=\"http://www.gtk.org\" title=\"Our website\">GTK+ website</a> for more")

标签也可以包含 助记符(mnemonics) ,助记符是标签中带有下划线的字符,用户键盘导航(呃,其实就是快捷键啦)。 助记符通过在助记符字符前添加下划线来实现,例如 “_File” ,需要调用 Gtk.Label.new_with_mnemonic() 或者 Gtk.Label.set_text_with_mnemonic() 。助记符会自动计划包含该标签的控件。例如 Gtk.Button ; 如果标签不在助记符的目标控件中,你需要通过 Gtk.Label.set_mnemonic_widget() 手动设置。

Label Objects

class Gtk.Label([text])

创建一个内容为 text 的标签,如果 text 忽略,则会创建一个空标签。

static new_with_mnemonic(text)

创建了一个新的标签,内容为 text

  如果 text 里的字符前面加一下划线,那这些字符即被强调。如果你需要一个下划线字符就要用 ‘__’ 。第一个下划线代表键盘快捷键(助记符)。

助记符的按键可以用来激活另一个窗口控件,这个窗口控件是自动选择的,或者你也可以调用 Gtk.Label.set_mnemonic_widget() 来修改。

如果没有调用 Gtk.Label.set_mnemonic_widget() ,则 Gtk.Label 标签的第一个可被激活的祖先会被选择作为助记符控件。 例如,如果标签是在一个按钮活在个一个菜单项里,那么按钮或菜单项就会自动成为助记符控件并且会自动被助记符激活。

set_justify(justification)

设置标签内的文本行相对于其他行的对齐方式, justification 可以设置为 Gtk.Justification.LEFT, Gtk.Justification.RIGHT, Gtk.Justification.CENTER, Gtk.Justification.FILL 之一。 对于包含单行文本的标签无效。

set_line_wrap(wrap)

如果 wrapTrue ,如果文本超过控件的大小时会自动折行。如果设置为 False ,若超过控件大小,文本会根据控件的边缘被截断。

set_markup(markup)

根据Pango标记语言解析 markup 标记后的文本设置标签内容。标记必须有效,例如,<, >, &这些字符必须写作&lt; &gt; 和&amp。

set_mnemonic_widget(widget)

如果标签设置了带有助记符的内容,此方法设置与助记符关联的目标控件。

set_selectable(selectable)

设置使用允许用户可以选择标签内的文本,用于复制粘贴。

set_text(text)

设置控件内的文本,会覆盖之前设置的文本。

set_text_with_mnemonic(text)

参照 new_with_mnemonic()

Example

../../_images/label_example.png
 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
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()
[1]Pango Markup Syntax, http://developer.gnome.org/pango/stable/PangoMarkupFormat.html