PyGTK - इवेंट हैंडलिंग

सिग्नल तंत्र के अतिरिक्त, विंडो सिस्टम ईवेंट्स को कॉलबैक फ़ंक्शन से भी जोड़ा जा सकता है। विंडो रीसाइज़िंग, की प्रेस, स्क्रॉल इवेंट आदि कुछ सामान्य विंडो सिस्टम ईवेंट हैं। इन घटनाओं को एप्लिकेशन के मुख्य लूप में सूचित किया जाता है। वहां से, उन्हें कॉलबैक फ़ंक्शंस के संकेतों के माध्यम से पारित किया जाता है।

सिस्टम घटनाओं में से कुछ नीचे सूचीबद्ध हैं -

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

कनेक्ट () पद्धति का उपयोग सिंटैक्स के बाद ईवेंट को कॉलबैक फ़ंक्शन के साथ जोड़ने के लिए किया जाता है -

Object.connect(name, function, data)

यहाँ, नाम उस स्ट्रिंग के लिए है जिसका नाम इवेंट के नाम से है जिसे कैप्चर किया जाना है। तथा,function का नाम है callbackवह कार्य जो किसी घटना के घटित होने पर कहा जाता है। डेटा कॉलबैक फ़ंक्शन पर पारित होने का तर्क है।

इसलिए, निम्न कोड एक बटन विजेट जोड़ता है और बटन_प्रेस घटना को कैप्चर करता है -

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

निम्नलिखित हैलो () फ़ंक्शन का प्रोटोटाइप होगा -

def hello(self,widget,event):

उदाहरण

निम्नलिखित बटन ईवेंट हैंडलर के लिए कोड है -

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

जब आप उपरोक्त कोड चलाते हैं, तो यह कंसोल पर निम्न आउटपुट प्रदर्शित करता है -

Hello TutorialsPoint