2017-06-12 7 views
0

私はPyGTK2 GUI用の単体テストを書いています。さまざまな点で、gtk.Statusbarに表示されているテキストをチェックする必要があります。クラスはpop()関数を定義しますが、何も返しません。どのようにして非破壊的にテキストが現在表示されているのですか?現在のテキストをPyGTKステータスバーからチェックするには?

+0

どのメッセージがStatusBarスタックに送られるかを制御するので、どのメッセージが表示されているかを把握する必要があります。 id。シグナル[テキストポップ](https://developer.gnome.org/pygtk/stable/class-gtkstatusbar.html#signal-gtkstatusbar--text-popped)と[text-pushed](ht tps://developer.gnome.org/pygtk/stable/class-gtkstatusbar.html#signal-gtkstatusbar--text-pushed)は、プッシュ/ポップ中にテキストを表示しますが、実際には追加/削除しています。 GtkStatusBarは表示されているテキストを含むラベルを公開しないので、アプローチを再考する必要があります。 –

答えて

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)) 

クリックすると、現在のメッセージの内容を印刷します。まず、Gtk.Boxのステータスバーのmessage_areaにアクセスしてください。 get_text()はあなたにテキストを取得し、その

これは、イントロスペクションを通じてGtkですが、それはあなたは、これを変更することができるはずのPython 2です - あなたはその後、タイプGtk.Labelのある箱(内の要素にアクセスすることができます。コードをpygtkに簡単に変更してください - Gtkからgtk

+0

素晴らしい作品です。これはテストコードなので、私はイントロスペクションをまったく気にしません –

関連する問題