Pygtk-event-handling

提供:Dev Guides
移動先:案内検索

PyGTK-イベント処理

シグナルメカニズムに加えて、ウィンドウシステムイベントもコールバック関数に接続できます。 ウィンドウのサイズ変更、キーの押下、スクロールイベントなど。 一般的なウィンドウシステムイベントの一部です。 これらのイベントは、アプリケーションのメインループに報告されます。 そこから、それらはシグナルを経由してコールバック関数に渡されます。

システムイベントのいくつかは以下にリストされています-

  • button_press_event
  • button_release_event
  • scroll_event
  • motion_notify_event
  • delete_event
  • destroy_event
  • 公開イベント
  • key_press_event
  • key_release_event

connect()メソッドは、構文に従ってイベントをコールバック関数に関連付けるために使用されます-

Object.connect(name, function, data)

ここで、nameは、キャプチャされるイベントの名前に対応する文字列を表します。 また、 function は、イベントが発生したときに呼び出される callback 関数の名前です。 データは、コールバック関数に渡される引数です。

したがって、次のコードはButtonウィジェットを接続し、button_pressイベントをキャプチャします-

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

以下は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 finddevguides