Bab 4. Event

Sebagai pelengkap mekanisme signal yang dijelaskan sebelumnya, ada sekumpulan event yang berkaitan dengan mekanisme event X (sistem X Window). Fungsi callback dapat dihubungkan dengan event-event ini. Daftar event ini adalah :

  event
  button_press_event
  button_release_event
  scroll_event
  motion_notify_event
  delete_event
  destroy_event
  expose_event
  key_press_event
  key_release_event
  enter_notify_event
  leave_notify_event
  configure_event
  focus_in_event
  focus_out_event
  map_event
  unmap_event
  property_notify_event
  selection_clear_event
  selection_request_event
  selection_notify_event
  proximity_in_event
  proximity_out_event
  visibility_notify_event
  client_event
  no_expose_event
  window_state_event

Untuk menghubungkan event ini dengan fungsi callback Anda dapat menggunakan method connect() seperti signal biasa dengan nama event sebagai nama signal. Namun fungsi callback untuk event sedikit berbeda dengan untuk signal :

    def fungsi_callback(widget,gdk_event,callback_data):
    def method_callback(self,widget,gdk_event,callback_data):

gdk_event adalah objek dengan atribut tipenya menyatakan jenis event yang terjadi. Atribut yang lain dari event tergantung pada tipe event. Kemungkinan tipenya adalah :

  NOTHING
  DELETE
  DESTROY
  EXPOSE
  MOTION_NOTIFY
  BUTTON_PRESS
  _2BUTTON_PRESS
  _3BUTTON_PRESS
  BUTTON_RELEASE
  KEY_PRESS
  KEY_RELEASE
  ENTER_NOTIFY
  LEAVE_NOTIFY
  FOCUS_CHANGE
  CONFIGURE
  MAP
  UNMAP
  PROPERTY_NOTIFY
  SELECTION_CLEAR
  SELECTION_REQUEST
  SELECTION_NOTIFY
  PROXIMITY_IN
  PROXIMITY_OUT
  DRAG_ENTER
  DRAG_LEAVE
  DRAG_MOTION
  DRAG_STATUS
  DROP_START
  DROP_FINISHED
  CLIENT_EVENT
  VISIBILITY_NOTIFY
  NO_EXPOSE
  SCROLL
  WINDOW_STATE
  SETTING

Nilai ini dapat diakses melalui awalan gtk.gdk, contohnya : gtk.gdk.DRAG_ENTER . Misalnya kita akan menghubungkan salah satu event ini ke fungsi callback :

    button.connect("button_press_event", button_press_callback)

Sebagai contoh button adalah widget GtkButton. Jika tombol mouse ditekan maka fungsi button_press_callback akan dipanggil. Fungsi ini didefiniskan sebagai :

    def button_press_callback(widget,event,data):

Nilai yang dikembalikan oleh fungsi ini mempengaruhi apakan event akan diteruskan oleh mekanisme event GTK. Jika gtk.TRUE menyatakan bahwa event telah dikuasai dan tidak perlu diteruskan lebih jauh. Jika gtk.FALSE maka event akan diteruskan seperti biasa.

GDK drag-and-drop serta selection API juga menyebabkan beberapa event yang oleh GTK diteruskan menjadi signal.

  selection_received
  selection_get
  drag_begin_event
  drag_end_event
  drag_data_delete
  drag_motion
  drag_drop
  drag_data_get
  drag_data_received