Pygtk-statusbar-class

提供:Dev Guides
移動先:案内検索

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

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

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

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

bar = gtk.Statusbar()

以下は、gtk.Statusbarクラスのメソッドです-

  • * Statusbar.push(context_id、text)*-これは新しいメッセージをステータスバーのスタックにプッシュします。
  • * Statusbar.pop(context_id)-これは、ステータスバーのスタックから指定された *context_id を持つトップメッセージを削除します。

次の信号は、Statusbarウィジェットによって発行されます-

text-popped This is emitted when a message is removed from the statusbar message stack.
text-pushed This is emitted when a message is added to the statusbar message stack.

次の例は、ステータスバーの機能を示しています。 トップレベルウィンドウには、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キーを押すと、ステータスバーに「テキストが入力されました」というメッセージが表示されます。