PyGTK 状态栏类
通常在窗口底部的通知区域被称为状态栏。任何类型的状态变化信息都可以显示在状态栏上。它也有一个握柄,可以用来调整大小。
gtk.Statusbar widget维护着一个信息栈。因此,新消息会显示在当前消息的顶部。如果它被弹出,先前的消息将再次可见。消息的来源必须通过context_id来唯一地识别它。
下面是gtk.Statusbar部件的构造函数—-。
bar = gtk.Statusbar()
下面是gtk.Statusbar类的方法 –
- Statusbar.push(context_id, text) – 将一条新的信息推送到状态栏的栈中。
-
Statusbar.pop(context_id) – 这将从状态栏的堆栈中删除具有指定 context_id 的最上面的消息。
以下信号是由Statusbar小组件发出的 –
text-popped | 当一条消息从状态栏的消息栈中被删除时,这个信号就会被发出来。 |
---|---|
text-pushed | 当一条信息被添加到状态栏的信息栈中时,这个信号就会发出。 |
下面的例子演示了Statusbar的功能。顶层窗口包含一个有两行的VBox。上面一行有一个固定的部件,其中有一个标签、一个条目部件和一个按钮。而在底部一行,添加了一个gtk.Statusbar widget。
为了向状态栏发送消息,需要获取其context_id。
id1 = self.bar.get_context_id("Statusbar")
Button对象的’clicked’信号被连接到一个回调函数,通过该函数在状态栏中推送一个信息。而且,当Entry小组件内的Enter键被按下时,”激活 “信号被发出。这个小组件被连接到另一个回调函数。
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()
执行后,上述代码将显示以下输出 –
试着在文本框中输入并按回车键,在状态栏中看到 “输入的文本 “信息。