PyGtk3,Label Widget,有一种方法可以获取标签文本的标记字符串吗?

时间:2017-03-13 21:12:37

标签: python pygtk

嗨我正在尝试获取标签文本的标记字符串,但我找不到像mylabel.get_markup这样的方法来执行此操作。我该怎么做 ? 为什么不存在get_markup方法?

例如

{{1}}

有一个像例如get_markup方法的方法吗?

2 个答案:

答案 0 :(得分:2)

来自Gtk.Label的文档:

get_text()

  

从标签小部件中获取文本,如屏幕上显示的那样。这不包括任何指示助记符或Pango标记的嵌入下划线。

get_label()

  

从标签小部件中获取文本,包括指示助记符和Pango标记的任何嵌入式下划线。

答案 1 :(得分:1)

正如elya5所说,为了获得标签标记,您可以使用label.get_label()方法来完成任务。

以下是如何执行此操作的示例:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

class MarkupText(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self)
        self.set_title("Test Markup")
        self.set_default_size(300,400)
        self.connect("delete-event", Gtk.main_quit)
        self.label = Gtk.Label()
        button = Gtk.Button()
        button.set_label("Click Me")
        button.connect("clicked", self.get_markup)
        box = Gtk.Box()
        box.pack_start(button, False, False, False)
        box.pack_start(self.label, False, False, False)
        self.add(box)
        self.show_all()
        Gtk.main()

    def get_markup(self, widget):
        a = ["<b>Hello</b>", "<i>Hi</i>", "<b><i>hoo</i></b>"]
        from random import choice
        self.label.set_markup(choice(a))
        # Print label's markup
        print(self.label.get_label())


if __name__ == '__main__':
    app = MarkupText()

终端输出:

<b>Hello</b>
<i>Hi</i>
<i>Hi</i>
<b><i>hoo</i></b>
<b><i>hoo</i></b>