PyGTK - Kelas EventBox

Beberapa widget dalam kit alat PyGTK tidak memiliki jendelanya sendiri. Widget tanpa jendela seperti itu tidak dapat menerima sinyal peristiwa. Widget semacam itu, misalnya label, jika dimasukkan ke dalam kotak acara dapat menerima sinyal.

EventBox adalah wadah tak terlihat yang menyediakan jendela ke widget tanpa jendela. Ini memiliki konstruktor sederhana tanpa argumen apa pun -

gtk.EventBox()

Contoh

Dalam contoh berikut, dua widget dari gtk.EventBox ditempatkan di jendela tingkat atas. Di dalam setiap kotak acara, label ditambahkan. Kotak acara sekarang terhubung ke fungsi panggilan balik untuk memproses button_press_event di atasnya. Karena kotak acara itu sendiri tidak terlihat, secara efektif acara tersebut terjadi pada label yang disematkan. Oleh karena itu, saat kita mengklik label apa pun, fungsi panggilan balik yang sesuai akan dipanggil.

Perhatikan kodenya -

import gtk

class PyApp(gtk.Window):
   
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("EventBox demo")
      self.set_size_request(200,100)
      self.set_position(gtk.WIN_POS_CENTER)
      fixed = gtk.Fixed()
      
      event1 = gtk.EventBox()
      label1 = gtk.Label("Label 1")
      event1.add(label1)
      fixed.put(event1, 80,20)
      
      event1.connect("button_press_event",self.hello1)
      event2 = gtk.EventBox()
      label2 = gtk.Label("Label 2")
      event2.add(label2)
      event2.connect("button_press_event",self.hello2)
      fixed.put(event2, 80,70)
      
      self.add(fixed)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
		
   def hello1(self, widget, event):
      print "clicked label 1"
		
   def hello2(self, widget, event):
      print "clicked label 2"

PyApp()
gtk.main()

Kode di atas menghasilkan output berikut -

Saat Label 1 diklik di konsol, pesan "label yang diklik 1" akan dicetak. Demikian pula, ketika Label 2 diklik, pesan "label yang diklik 2" dicetak.