PyGTK - Ereignisbehandlung

Neben dem Signalmechanismus können Fenstersystemereignisse auch mit Rückruffunktionen verbunden werden. Fenstergröße ändern, Tastendruck, Bildlaufereignis usw. sind einige der häufigsten Ereignisse im Fenstersystem. Diese Ereignisse werden an die Hauptschleife der Anwendung gemeldet. Von dort werden sie über Signale an die Rückruffunktionen weitergeleitet.

Einige der Systemereignisse sind unten aufgeführt -

  • button_press_event
  • button_release_event
  • scroll_event
  • motion_notify_event
  • delete_event
  • destroy_event
  • expose_event
  • key_press_event
  • key_release_event

Die connect () -Methode wird verwendet, um das Ereignis der Rückruffunktion gemäß der Syntax zuzuordnen -

Object.connect(name, function, data)

Hier steht name für die Zeichenfolge, die dem Namen des Ereignisses entspricht, das erfasst werden soll. Und,function ist der Name des callbackFunktion, die aufgerufen werden soll, wenn ein Ereignis eintritt. Daten sind das Argument, das an die Rückruffunktion weitergegeben werden soll.

Daher verbindet der folgende Code ein Button-Widget und erfasst das button_press-Ereignis -

self.btn.connect("button_press_event", self.hello)

Das Folgende ist der Prototyp der Funktion hallo () -

def hello(self,widget,event):

Beispiel

Das Folgende ist der Code für die Schaltflächenereignishandler -

import gtk
class PyApp(gtk.Window):
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Hello World in PyGTK")
      self.set_default_size(400,300)
      self.set_position(gtk.WIN_POS_CENTER)
		
      self.label = gtk.Label("Enter name")
      self.entry = gtk.Entry()
      self.btn = gtk.Button("Say Hello")
      self.btn.connect("button_press_event", self.hello)
		
      fixed = gtk.Fixed()
      fixed.put(self.label, 100,100)
      fixed.put(self.entry, 100,125)
      fixed.put(self.btn,100,150)
		
      self.add(fixed)
      self.show_all()
		
   def hello(self,widget,event):
      print "hello",self.entry.get_text()

PyApp()
gtk.main()

Wenn Sie den obigen Code ausführen, wird die folgende Ausgabe auf der Konsole angezeigt:

Hello TutorialsPoint