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

时间:2017-06-12 16:11:11

标签: gtk pygtk statusbar

我正在为PyGTK2 GUI编写单元测试,在不同的点上我需要检查gtk.Statusbar中显示的文本。该类定义了pop()函数,但它不返回任何内容。如何以非破坏性方式获取当前显示的文本?

1 个答案:

答案 0 :(得分:1)

这应该这样做:

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()可以获取文本。

这是Gtk通过Introspection,但它 Python 2.您应该能够轻松地将此代码修改为pygtk - 可能只是更改导入和{{ 1}}到Gtk