当前位置: 首页 > 文档资料 > PyGTK 中文教程 >

状态栏类(Statusbar Class)

优质
小牛编辑
129浏览
2023-12-01

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

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的功能。 Toplevel窗口包含两行的VBox。 上排有一个Fixed小部件,其中放置了一个标签,一个Entry小部件和一个按钮。 然而,在底行中,添加了gtk.Statusbar小部件。

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

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

Button对象的“clicked”信号连接到回调函数,通过该回调函数在状态栏中按下消息。 并且,当在Entry小部件中按下Enter键时,会发出'activate'信号。 此小部件已连接到另一个回调。

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

执行时,上面的代码将显示以下输出 -

状态栏演示

尝试在文本框中键入内容,然后按Enter键以查看状态栏中的“输入的文本”消息。