如何从 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
.
我正在为我的 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
.