如何从 PyGTK 状态栏检查当前文本?

How to check the current text from a PyGTK Statusbar?

我正在为我的 PyGTK2 GUI 编写单元测试,在不同的点我需要检查 gtk.Statusbar 中显示的文本。 class 定义了一个 pop() 函数,但它没有 return 任何东西。如何无损获取当前显示的文字?

应该这样做:

from gi.repository import Gtk

class MainWindow(Gtk.Window):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.connect("destroy", lambda x: Gtk.main_quit())

        bigbtn = Gtk.Button("Show elements")
        bigbtn.connect("clicked", self.on_bigbtn_clicked)

        self.stat = Gtk.Statusbar()
        for id, lbl in enumerate(["One", "Two", "Three"]):
            self.stat.push(id, lbl)

        vbox = Gtk.VBox()
        vbox.pack_start(bigbtn, True, True, 0)
        vbox.pack_start(self.stat, False, False, 0)

        self.add(vbox)
        self.show_all()

    def on_bigbtn_clicked(self, btn):
        for el in self.stat.get_message_area():
            print(el.get_text())

    def run(self):
        Gtk.main()


def main(args):
    mainwdw = MainWindow()
    mainwdw.run()

    return 0

if __name__ == '__main__':
    import sys
    sys.exit(main(sys.argv))

点击顶部按钮将打印当前消息的内容。诀窍是首先访问状态栏的message_area,类型为Gtk.Box。然后,您可以访问框中的元素(类型为 Gtk.Label - 因此,get_text() 会为您提供文本。

This is Gtk through Introspection, but it is Python 2. 你应该可以很容易地把这段代码修改成pygtk - 可能只是将导入和 Gtk 更改为 gtk.