PyGTK - obsługa zdarzeń

Oprócz mechanizmu sygnalizacyjnego zdarzenia systemowe okien mogą być również połączone z funkcjami wywołania zwrotnego. Zmiana rozmiaru okna, naciśnięcie klawisza, zdarzenie przewijania itp. To tylko niektóre z typowych zdarzeń systemu okien. Te zdarzenia są zgłaszane do głównej pętli aplikacji. Stamtąd są przekazywane za pośrednictwem sygnałów do funkcji zwrotnych.

Poniżej wymieniono niektóre zdarzenia systemowe -

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

Metoda connect () służy do powiązania zdarzenia z funkcją zwrotną zgodnie ze składnią -

Object.connect(name, function, data)

Tutaj nazwa oznacza ciąg odpowiadający nazwie zdarzenia, które ma zostać przechwycone. I,function to nazwa callbackfunkcja, która ma być wywołana, gdy wystąpi zdarzenie. Dane to argument, który ma zostać przekazany do funkcji zwrotnej.

W związku z tym poniższy kod łączy widżet Button i przechwytuje zdarzenie button_press -

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

Oto prototyp funkcji hello () -

def hello(self,widget,event):

Przykład

Poniżej znajduje się kod obsługi zdarzeń przycisku -

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

Po uruchomieniu powyższego kodu wyświetla na konsoli następujące dane wyjściowe -

Hello TutorialsPoint