PyGTK 状态栏类
通知区域通常位于窗口底部,被称为状态栏。任何类型的状态更改消息都可以显示在状态栏上。它还有一个可以调整大小的手柄。
gtk.Statusbar小部件维护着一组消息。因此,新消息会显示在当前消息的顶部。如果弹出消息,之前的消息将再次可见。源的消息必须通过context_id进行标识以确保其唯一性。
以下是gtk.Statusbar小部件的构造函数-
bar = gtk.Statusbar()
下面是gtk.Statusbar类的方法-
- Statusbar.push(context_id, text) - 将一个新的消息推送到状态栏的堆栈上。
-
Statusbar.pop(context_id) - 从状态栏的堆栈中删除具有指定上下文ID的顶部消息。
下面是由Statusbar小部件发出的信号-
text-popped | 当从状态栏消息栈中移除一条消息时,会触发此事件。 |
---|---|
text-pushed | 当向状态栏消息栈中添加一条消息时,会触发此事件。 |
下面的示例演示了状态栏的功能。顶级窗口包含一个带有两行的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() 方法将消息在通知区域中显示。
示例
观察以下代码:
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()
在执行后,上述代码将显示以下输出−
尝试在文本框中输入内容,然后按回车键,在状态栏中看到“输入的文本”消息。