PyGTK-ステータスバークラス

通常、ウィンドウの下部にある通知領域は、ステータスバーと呼ばれます。ステータスバーには、あらゆるタイプのステータス変更メッセージを表示できます。また、サイズを変更できるグリップもあります。

gtk.Statusbarウィジェットは、メッセージのスタックを維持します。したがって、新しいメッセージが現在のメッセージの上に表示されます。ポップされると、以前のメッセージが再び表示されます。メッセージのソースは、一意に識別するためにcontext_idで識別される必要があります。

以下はgtk.Statusbarウィジェットのコンストラクターです-

bar = gtk.Statusbar()

gtk.Statusbarクラスのメソッドは次のとおりです-

  • Statusbar.push(context_id, text) −これにより、新しいメッセージがステータスバーのスタックにプッシュされます。

  • Statusbar.pop(context_id) −これにより、指定された先頭のメッセージが削除されます context_id ステータスバーのスタックから。

次の信号は、ステータスバーウィジェットによって発行されます-

テキストポップ これは、メッセージがステータスバーメッセージスタックから削除されたときに発行されます。
テキストプッシュ これは、メッセージがステータスバーメッセージスタックに追加されたときに発行されます。

次の例は、ステータスバーの機能を示しています。トップレベルウィンドウには、2行のVBoxが含まれています。上の行には、ラベル、エントリウィジェット、ボタンが配置された固定ウィジェットがあります。一方、一番下の行には、gtk.Statusbarウィジェットが追加されています。

メッセージをステータスバーに送信するには、そのcontext_idをフェッチする必要があります。

id1 = self.bar.get_context_id("Statusbar")

Buttonオブジェクトの「クリックされた」シグナルは、メッセージがステータスバーにプッシュされるコールバック関数に接続されています。また、エントリウィジェット内でEnterキーを押すと、「アクティブ化」信号が発行されます。このウィジェットは別のコールバックに接続されています。

btn.connect("clicked", self.on_clicked, id1)
txt.connect("activate", self.on_entered, id1)

両方のコールバックは push() 通知領域でメッセージをフラッシュする方法。

次のコードを確認してください-

import gtk

class PyApp(gtk.Window):
   
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Statusbar demo")
      self.set_size_request(400,200)
      self.set_position(gtk.WIN_POS_CENTER)
		
      vbox = gtk.VBox()
      fix = gtk.Fixed()
      lbl = gtk.Label("Enter name")
		
      fix.put(lbl, 175, 50)
      txt = gtk.Entry()
      fix.put(txt, 150, 100)
		
      btn = gtk.Button("ok")
      fix.put(btn, 200,150)
		
      vbox.add(fix)
      self.bar = gtk.Statusbar()
      vbox.pack_start(self.bar, True, False, 0)
		
      id1 = self.bar.get_context_id("Statusbar")
      btn.connect("clicked", self.on_clicked, id1)
      txt.connect("activate", self.on_entered, id1)
		
      self.add(vbox)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
		
      def on_clicked(self, widget, data=None):
         self.bar.push(data, "Button clicked
		
      def on_entered(self, widget, data):
         self.bar.push(data, "text entered")

PyApp()
gtk.main()

実行すると、上記のコードは次の出力を表示します-

テキストボックスに入力してEnterキーを押すと、ステータスバーに「テキストが入力されました」というメッセージが表示されます。