PyGTK - EventBox-Klasse

Einige Widgets im PyGTK-Toolkit haben kein eigenes Fenster. Solche fensterlosen Widgets können keine Ereignissignale empfangen. Solche Widgets, beispielsweise ein Label, können Signale empfangen, wenn sie in eine Eventbox eingefügt werden.

EventBox ist ein unsichtbarer Container, der fensterlosen Widgets Fenster bietet. Es hat einen einfachen Konstruktor ohne Argument -

gtk.EventBox()

Beispiel

Im folgenden Beispiel werden zwei Widgets der gtk.EventBox im Fenster der obersten Ebene platziert. In jeder Eventbox wird eine Beschriftung hinzugefügt. Die Eventbox ist jetzt mit einer Rückruffunktion verbunden, um das button_press_event darauf zu verarbeiten. Da die Eventbox selbst unsichtbar ist, tritt das Ereignis effektiv auf dem eingebetteten Label auf. Wenn wir also auf eine Beschriftung klicken, wird die entsprechende Rückruffunktion aufgerufen.

Beachten Sie den Code -

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()

Der obige Code generiert die folgende Ausgabe:

Wenn Sie auf der Konsole auf Etikett 1 klicken, wird die Meldung "Etikett 1 angeklickt" gedruckt. In ähnlicher Weise wird beim Klicken auf Etikett 2 die Meldung "Etikett 2 angeklickt" gedruckt.