Tkinter イベントのバインディング - Tkinter Event and binding

 Tkinterウィジェット(widget) はユーザーのマウス操作、キーボード操作やウィンドウマネージャーからのイベントを受け取ることが出来る。
 もし、ウィジェット(widget) に記述されたイベントが起こったら対応するイベントハンドラを実行する。下記の例だと widget (frame) に記述されたイベント() が起こったら対応するイベントハンドラ (callback) が実行される。

# -*- coding: utf-8 -*-

from Tkinter import *

root = Tk()

def callback(event):
    print "clicked at", event.x, event.y

frame = Frame(root, width=100, height=100)
frame.bind("<Button-1>", callback)
frame.pack()

root.mainloop()


 次の例はキーボードが押されるとそのキーの文字を表示する。キーボードイベントはその widget にフォーカスがないと受け取れない。(ウィンドウのフォーカスとは別に) frame.forcus_set() のようにしてからでないとその widget はキーボードイベントを受け取ってくれない。

# -*- coding: utf-8 -*-

from Tkinter import *

root = Tk()

def key(event):
    print "pressed", repr(event.char)

frame = Frame(root, width=100, height=100)
frame.bind("<Key>", key)
frame.focus_set()
frame.pack()

root.mainloop()


イベントいろいろ - Events

イベント 説明
左マウスボタンが押された時に発生。
真ん中マウスボタンが押された時に発生。
右マウスボタンが押された時に発生。
# -*- coding: utf-8 -*-

#左ボタンをwidget上で押すとその座標を表示する。

from Tkinter import *

root = Tk()

def callback(event):
    print "clicked at", event.x, event.y

frame = Frame(root, width=100, height=100)
frame.bind("<Button-1>", callback)
frame.pack()

root.mainloop()
イベント 説明
左ボタンを押しながらマウスを動かすと発生。
真ん中ボタンを押しながらマウスを動かすと発生。
右ボタンを押しながらマウスを動かすと発生。
# -*- coding: utf-8 -*-

#widget上で右ボタンを押しながらマウスを動かすと
#その座標を表示する。

from Tkinter import *

root = Tk()

def callback(event):
    print "pointer is", event.x, event.y

frame = Frame(root, width=100, height=100)
frame.bind("<B3-Motion>", callback)
frame.pack()

root.mainloop()
イベント 説明
左ボタンを押してそのボタンを放した時に発生。
真ん中ボタンを押してそのボタンを放した時に発生。
右ボタンを押してそのボタンを放した時に発生。
# -*- coding: utf-8 -*-

#widget上で左ボタンを放した時にその座標を表示する。

from Tkinter import *

root = Tk()

def callback(event):
    print "ButtonReleased at", event.x, event.y

frame = Frame(root, width=100, height=100)
frame.bind("<ButtonRelease-1>", callback)
frame.pack()

root.mainloop()
イベント 説明
左ボタンをダブルクリックした時に発生。
真ん中ボタンをダブルクリックした時に発生。
右ボタンをダブルクリックした時に発生。
左ボタンをトリプルクリックした時に発生。
真ん中ボタンをトリプルクリックした時に発生。
右ボタンをトリプルクリックした時に発生。
# -*- coding: utf-8 -*-

#widget上で左ボタンをダブルクリックした時に
#その座標を表示する。

from Tkinter import *

root = Tk()

def callback(event):
    print "clicked at", event.x, event.y

frame = Frame(root, width=100, height=100)
frame.bind("<Double-Button-1>", callback)
frame.pack()

root.mainloop()
イベント 説明
マウスポインターが widget に入った時に発生。
# -*- coding: utf-8 -*-

#マウスポインターが widget に入った時に
#その座標を表示する。

from Tkinter import *

root = Tk()

def callback(event):
    print "Entered from", event.x, event.y

frame = Frame(root, width=100, height=100)
frame.bind("<Enter>", callback)
frame.pack()

root.mainloop()
イベント 説明
マウスポインターが widget から出た時に発生。
# -*- coding: utf-8 -*-

#マウスポインターが widget から出た時に
#その座標を表示する。

from Tkinter import *

root = Tk()

def callback(event):
    print "Leaved from", event.x, event.y

frame = Frame(root, width=100, height=100)
frame.bind("<Leave>", callback)
frame.pack()

root.mainloop()
イベント 説明
キーボードフォーカスが wiget に移った時に発生。
キーボードフォーカスを wiget が失った時に発生。
イベント 説明
Enter キーが押された時に発生。
Break キーが押された時に発生。
BackSpace キーが押された時に発生。
Tab キーが押された時に発生。
左Shift キーが押された時に発生。
右Shift キーが押された時に発生。
左Control キーが押された時に発生。
右Control キーが押された時に発生。
左Alt キーが押された時に発生。
右Alt キーが押された時に発生。
Pause キーが押された時に発生。
Caps Lock キーが押された時に発生。
Escape,Esc キーが押された時に発生。
Page Up キーが押された時に発生。
Page Down キーが押された時に発生。
End キーが押された時に発生。
Home キーが押された時に発生。
Left,左矢印 キーが押された時に発生。
Up,上矢印 キーが押された時に発生。
Right,右矢印 キーが押された時に発生。
Down,下矢印 キーが押された時に発生。
Print キーが押された時に発生。
< Insert > Insert キーが押された時に発生。
< Delete > Delete キーが押された時に発生。
の各キーが押された時に発生。
Num Lock キーが押された時に発生。
Scroll Lock キーが押された時に発生。
space キーが押された時に発生。
左windows キーが押された時に発生。
右windows キーが押された時に発生。
アプリケーション キーが押された時に発生。
キーボードのなんかのボタンが押されたら発生。
1 キーボードの 1 のボタンが押されたら発生。
<1> マウスの左のボタンが押されたら発生。
3 キーボードの 3 のボタンが押されたら発生。
<1> マウスの右のボタンが押されたら発生。
Shift を押しながら上矢印が押された時に発生。
widget のサイズを変更した時に発生。

明日はプロトコルイベントです。