Pygtk 简明教程
PyGTK - Statusbar Class
一个通知区域,通常位于窗口底部,称为状态栏。可以在状态栏上显示任何类型的状态变更消息。它还有握柄,可以使用它来调整大小。
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 |
当消息添加到状态栏消息堆栈时发出。 |
以下示例演示了状态栏的功能。顶层窗口包含一个带有两行的 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()
在执行后,上面的代码会显示以下输出:
尝试在文本框中输入然后按 Enter 以在状态栏中看到“已输入文本”消息。