PyGTK - คลาสแถบสถานะ
พื้นที่แจ้งเตือนโดยปกติจะอยู่ที่ด้านล่างของหน้าต่างเรียกว่าแถบสถานะ สามารถแสดงข้อความการเปลี่ยนแปลงสถานะประเภทใดก็ได้บนแถบสถานะ นอกจากนี้ยังมีกริปที่สามารถปรับขนาดได้
วิดเจ็ต gtk.Statusbar จะเก็บรักษากลุ่มข้อความ ดังนั้นข้อความใหม่จะปรากฏที่ด้านบนของข้อความปัจจุบัน หากป๊อปอัปข้อความก่อนหน้านี้จะปรากฏขึ้นอีกครั้ง ต้องระบุแหล่งที่มาของข้อความโดย context_id เพื่อระบุไม่ซ้ำกัน
ต่อไปนี้เป็นตัวสร้างของวิดเจ็ต gtk.Statusbar -
bar = gtk.Statusbar()
ต่อไปนี้เป็นวิธีการของคลาส gtk.Statusbar -
Statusbar.push(context_id, text) - สิ่งนี้จะผลักข้อความใหม่ไปยังสแต็กของแถบสถานะ
Statusbar.pop(context_id) - สิ่งนี้จะลบข้อความบนสุดที่ระบุ context_id จากสแต็กของแถบสถานะ
สัญญาณต่อไปนี้ถูกปล่อยออกมาโดยวิดเจ็ต Statusbar -
ข้อความโผล่ | สิ่งนี้จะถูกปล่อยออกมาเมื่อข้อความถูกลบออกจากกองข้อความแถบสถานะ |
ข้อความที่ผลักดัน | สิ่งนี้จะถูกปล่อยออกมาเมื่อข้อความถูกเพิ่มไปยังกองข้อความแถบสถานะ |
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการทำงานของแถบสถานะ หน้าต่าง Toplevel มี VBox สองแถว แถวบนมีวิดเจ็ตคงที่ซึ่งมีการใส่ป้ายกำกับวิดเจ็ตรายการและปุ่ม ในขณะที่แถวด้านล่างมีการเพิ่มวิดเจ็ต gtk.Statusbar
ในการส่งข้อความไปยังแถบสถานะจำเป็นต้องดึง context_id
id1 = self.bar.get_context_id("Statusbar")
สัญญาณ 'คลิก' ของวัตถุปุ่มเชื่อมต่อกับฟังก์ชันเรียกกลับซึ่งข้อความจะถูกผลักในแถบสถานะ และสัญญาณ 'เปิดใช้งาน' จะปรากฏขึ้นเมื่อกดปุ่ม 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()
เมื่อดำเนินการรหัสด้านบนจะแสดงผลลัพธ์ต่อไปนี้ -
ลองพิมพ์ในกล่องข้อความแล้วกด Enter เพื่อดูข้อความ "ป้อนข้อความ" ในแถบสถานะ