0
我正在爲我的PyGTK2 GUI編寫單元測試,並且需要檢查顯示在gtk.Statusbar
中的文本。該類定義了一個pop()
函數,但它不返回任何內容。我如何非破壞性地獲取當前顯示的文字?如何檢查PyGTK狀態欄中的當前文本?
我正在爲我的PyGTK2 GUI編寫單元測試,並且需要檢查顯示在gtk.Statusbar
中的文本。該類定義了一個pop()
函數,但它不返回任何內容。我如何非破壞性地獲取當前顯示的文字?如何檢查PyGTK狀態欄中的當前文本?
這應做到:
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))
點擊頂部的按鈕將打印當前消息的內容。訣竅是首先訪問Gtk.Box
類型的狀態欄message_area
。然後,您可以訪問該元素在框中(這是Gtk.Label
型的 - 所以,一個get_text()
讓你的文字
這是Gtk
通過內省,但它是的Python 2.你應該能夠修改此。代碼pygtk
容易 - 也許只是改變了進口和Gtk
到gtk
很好,因爲這是測試代碼,我不介意所有的反思 –
您控制在哪些消息到狀態欄棧,所以你應該跟蹤哪些正在顯示一個pop方法刪除一條消息,如果你一直是。 id。[text-popped](https://developer.gnome.org/pygtk/stable/class-gtkstatusbar.html#signal-gtkstatusbar--text-popped)和[text-push](ht tps://developer.gnome.org/pygtk/stable/class-gtkstatusbar.html#signal-gtkstatusbar--text-pushed)在推送/彈出時爲您提供文本,但實際上是添加/刪除它。 GtkStatusBar不公開包含顯示文本的標籤,因此您必須重新考慮您的方法。 –