PyGTK - 狀態列類



視窗底部通常有一個通知區域,稱為狀態列。任何型別的狀態更改訊息都可以在狀態列上顯示。它還有一個可以用來調整大小的控制柄。

gtk.Statusbar 小部件維護一個訊息堆疊。因此,新訊息會顯示在當前訊息的頂部。如果將其彈出,則先前訊息將再次可見。訊息的來源必須由 context_id 唯一標識。

以下是 gtk.Statusbar 小部件的建構函式:

bar = gtk.Statusbar()

以下是 gtk.Statusbar 類的使用方法:

  • Statusbar.push(context_id, text) − 此方法將新訊息推送到狀態列的堆疊。

  • Statusbar.pop(context_id) − 此方法從狀態列的堆疊中刪除具有指定context_id的頂部訊息。

狀態列小部件會發出以下訊號:

text-popped 從狀態列訊息堆疊中移除訊息時發出此訊號。
text-pushed 向狀態列訊息堆疊新增訊息時發出此訊號。

以下示例演示了 Statusbar 的功能。頂級視窗包含一個包含兩行的 VBox。上行有一個 Fixed 小部件,其中放置了一個標籤、一個 Entry 小部件和一個按鈕。而在底行,添加了一個 gtk.Statusbar 小部件。

為了向狀態列傳送訊息,需要獲取其 context_id。

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

按鈕物件的“clicked”訊號透過回撥函式連線,該函式將訊息推送到狀態列。當在 Entry 小部件內按下 Enter 鍵時,“activate”訊號會被髮出。此小部件連線到另一個回撥函式。

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

執行上述程式碼後,將顯示以下輸出:

Statusbar Demo

嘗試在文字框中輸入文字並按 Enter 鍵,檢視狀態列中的“已輸入文字”訊息。

廣告
© . All rights reserved.