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