PyGTK - Lớp thanh trạng thái

Vùng thông báo, thường ở cuối cửa sổ được gọi là thanh trạng thái. Mọi loại thông báo thay đổi trạng thái đều có thể được hiển thị trên thanh trạng thái. Nó cũng có một báng cầm có thể thay đổi kích thước.

Tiện ích gtk.Statusbar duy trì một chồng thông báo. Do đó, tin nhắn mới sẽ được hiển thị trên đầu tin nhắn hiện tại. Nếu nó xuất hiện, thông báo trước đó sẽ hiển thị lại. Nguồn của thông báo phải được xác định bằng context_id để nhận dạng nó duy nhất.

Sau đây là hàm tạo của tiện ích gtk.Statusbar:

bar = gtk.Statusbar()

Sau đây là các phương thức của lớp gtk.Statusbar:

  • Statusbar.push(context_id, text) - Điều này đẩy một thông báo mới lên ngăn xếp của thanh trạng thái.

  • Statusbar.pop(context_id) - Điều này loại bỏ thông báo hàng đầu với các context_id từ ngăn xếp của thanh trạng thái.

Các tín hiệu sau được phát ra bởi tiện ích Thanh trạng thái:

text-popped Điều này được phát ra khi một thông báo bị xóa khỏi ngăn xếp thông báo trên thanh trạng thái.
văn bản đẩy Điều này được phát ra khi một thông báo được thêm vào ngăn xếp thông báo trên thanh trạng thái.

Ví dụ sau minh họa hoạt động của Statusbar. Cửa sổ tầng chứa một VBox có hai hàng. Hàng trên có một widget Cố định, trong đó đặt một nhãn, một widget Entry và một nút. Trong khi đó, ở hàng dưới cùng, một widget gtk.Statusbar được thêm vào.

Để gửi thông báo đến thanh trạng thái, cần tìm nạp context_id của nó.

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

Tín hiệu 'đã nhấp' của đối tượng Nút được kết nối với chức năng gọi lại qua đó thông báo được đẩy lên thanh trạng thái. Và, tín hiệu 'kích hoạt' được phát ra khi nhấn phím Enter bên trong tiện ích Entry. Tiện ích này được kết nối với một cuộc gọi lại khác.

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

Cả hai lệnh gọi lại đều sử dụng push() phương pháp để nhấp nháy thông báo trong khu vực thông báo.

Thí dụ

Quan sát đoạn mã sau:

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

Khi thực thi, đoạn mã trên sẽ hiển thị kết quả sau:

Hãy thử nhập vào hộp văn bản và nhấn Enter để xem thông báo 'văn bản đã nhập' trên thanh trạng thái.