### 7 バインドとイベント

ウィジェットコマンドからのbindメソッドによって、あるイベントを待つことと、そのイベント型が起きたときにコールバック関数を呼び出すことができるようになります。bindメソッドの形式は:

        def bind(self, sequence, func, add=''):

ここでは:

sequence
  は対象とするイベントの型を示す文字列です。(詳細については、bindのmanページとJohn Ousterhoutの本の201ページをを参照してください。)

func
  は一引数を取り、イベントが起きるときに呼び出される Python 関数です。イベント・インスタンスが引数として渡されます。(このように実施される関数は、一般にcallbacksとして知られています。)

add
  はオプションで、"``"か"`+`"のどちらかです。 空文字列を渡すことは、このイベントが関係する他のどんなバインドをもこのバインドが置き換えることを意味します。 "`+`"を使う仕方は、この関数がこのイベント型にバインドされる関数のリストに追加されることを意味しています。

例えば:

        def turnRed(self, event):
            event.widget["activeforeground"] = "red"

        self.button.bind("<Enter>", self.turnRed)

イベントのウィジェットフィールドが`turnRed()`コールバック内でどのようにアクセスされているかに注意してください。 このフィールドはXイベントを捕らえるウィジェットを含んでいます。 以下の表はあなたがアクセスできる他のイベントフィールドとそれらのTkでの表現方法の一覧です。Tk manページを参照するときに役に立つでしょう。

    Tk      Tkinterイベントフィールド       Tk      Tkinterイベントフィールド
    --      -------------------------       --      -------------------------
    %f      focus                           %A      char
    %h      height                          %E      send_event
    %k      keycode                         %K      keysym
    %s      state                           %N      keysym_num
    %t      time                            %T      type
    %w      width                           %W      widget
    %x      x                               %X      x_root
    %y      y                               %Y      y_root