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