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

前回はこちら。


プロトコルイベント - Protocols
イベントを受け取る widget は root もしくは Toplevel widget でないといけない。

イベント 説明
WM_DELETE_WINDOW ウィンドウが閉じられる時に発生。
# -*- coding: utf-8 -*-

#ウィンドウを閉じようとするとメッセージボックスが出る。

from Tkinter import *
import tkMessageBox

def callback():
    if tkMessageBox.askokcancel("Quit?", "Do you like to quit?"):
        root.destroy()

root = Tk()
root.protocol("WM_DELETE_WINDOW", callback)

root.mainloop()

イベントオブジェクトが保持している属性。- About Event Object

属性名 説明
event.widget イベントを受け取った widgetインスタンス
event.x 現在のマウスポインターの x 位置。(ピクセル)
event.y 現在のマウスポインターの y 位置。(ピクセル)
event.x_root 現在のマウスポインターの 画面上の x 位置。(ピクセル)
event.y_root 現在のマウスポインターの 画面上の y 位置。(ピクセル)
event.char キーボードイベント時のみ、キャラクタを文字で返す。
event.keysym キーボードイベント時のみ、そのキーのシンボル。
event.keycode キーボードイベント時のみ、このキーのキーコード。
event.num マウスボタンイベント時のみ、押されたマウスボタンのボタン番号。
event.width Configureイベント時のみ、widget の幅。(ピクセル)
event.height Configureイベント時のみ、widget の高さ。(ピクセル)
event.type イベントのタイプ。
# -*- coding: utf-8 -*-

#マウスのボタンを押すと左-1 真ん中-2 右-3 を表示する。

from Tkinter import *

root = Tk()

def callback(event):
    print event.num

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

root.mainloop()