Pygtk 简明教程

PyGTK - Statusbar Class

一个通知区域,通常位于窗口底部,称为状态栏。可以在状态栏上显示任何类型的状态变更消息。它还有握柄,可以使用它来调整大小。

gtk.Statusbar 组件维护一个消息堆栈。因此,新消息显示在当前消息的顶部。如果它被弹出,则以前的邮件将再次可见。必须通过 context_id 识别消息的来源才能唯一标识它。

以下是 gtk.Statusbar 组件的构造函数 −

bar = gtk.Statusbar()

以下是 gtk.Statusbar 类的函数 −

  1. Statusbar.push(context_id, text) − 这将一个新消息推送到状态栏的堆栈上。

  2. Statusbar.pop(context_id) − 这从状态栏的堆栈中使用指定的 context_id 移除顶部消息。

状态栏小组件会发出以下信号:

text-popped

当消息从状态栏消息堆栈中移除时发出。

text-pushed

当消息添加到状态栏消息堆栈时发出。

以下示例演示了状态栏的功能。顶层窗口包含一个带有两行的 VBox。上排有一行 Fixed 小组件,其中包含一个标签、一个 Entry 小组件和一个按钮。在底行中添加了一个 gtk.Statusbar 小组件。

为了向状态栏发送消息,需要获取其 context_id。

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

Button 对象的“单击”信号通过一个回调函数连接,通过该回调函数在状态栏中推送消息。而且当在 Entry 小组件中按下 Enter 键时会发出“激活”信号。此小组件连接到另一个回调。

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

两个回调都使用 push() 方法在通知区域中闪烁消息。

Example

观察以下代码 -

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 以在状态栏中看到“已输入文本”消息。