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 เพื่อดูข้อความ "ป้อนข้อความ" ในแถบสถานะ