状态栏类(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键以查看状态栏中的“输入的文本”消息。