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.