このホームページは Amazon Kindle 本の作成中の草稿です。日々、原稿を見直しているので、内容が変わることに留意して読んで下さい。本が出版され次第、このホームページは削除されます。
2.28 イベント処理(bind、unbind)
サブウィンドウはメインウィンドウと同様にキーボードやマウス操作のイベントを受け取ることができます。1.28 イベント処理を参照して下さい。
次のプログラムは、サブウィンドウに、マウスの左クリックのイベント「<button-1>」に「bind」メソッドで関数「callbind_1」と「callbind_2」を関連付けています。マウスを左クリックするとそれぞれ関数名を「print」出力します。また、同じサブウィンドウに、マウスの右クリックのイベント「<button-3>」に「bind」メソッドで関数「callunbind」を関連付けて、この関数でサブウィンドウのイベント「<button-1>」を「unbind」メソッドで無効にしています。
import tkinter as tk | |
root = tk.Tk() | |
root.geometry('300x200+100+100') | |
sub = tk.Toplevel(root, width=300, height=200, bg='red') | |
sub.geometry('+140+120') | |
root.update() | |
root.wm_deiconify() | |
sub.wm_deiconify() | |
def callbind_1(event): | |
print('callbind_1') | |
def callbind_2(event): | |
print('callbind_2') | |
def callunbind(event): | |
sub.unbind('<Button-1>') | |
sub.bind('<button-1>', callbind_1) | |
sub.bind('<button-1>', callbind_2, True) | |
sub.bind('<button-3>', callunbind) | |
root.mainloop() |
プログラムを実行すると、ウィンドウが表示されます。サブウィンドウのクライアント領域をマウスで左クリックすると下記の文字列が「print」出力されます。サブウィンドウのクライアント領域をマウスで右クリックすると、以降、サブウィンドウのクライアント領域をマウスで左クリックしても「print」出力はされません。
callbind_1
callbind_2
callbind_2