Tkinterはイベントハンドラーでオブジェクトを渡しませんが、とにかく、どのオブジェクトに関心があるかをどのように知るのでしょうか?
代わりに、イベントハンドラーから更新するオブジェクトにアクセスするのはユーザーの責任です。たとえば、イベントハンドラーは単純な関数であり、グローバルオブジェクトにアクセスできます。または、オブジェクトのメソッドであり、自分自身を介してそのオブジェクトにアクセスできます。
これがグローバルオブジェクトを使用する方法です
from Tkinter import *
root = Tk()
frame = Frame(root)
frame.configure(width=300,height=300)
def onmotion(event):
root.title("Mouse at %s,%s"%(event.x, event.y))
frame.bind("<Motion>", onmotion)
frame.pack()
root.title("Event test")
root.mainloop()
同じことがオブジェクト指向の方法で行うことができます
from Tkinter import *
class MyFrame(Frame):
def __init__(self, root):
Frame.__init__(self, root)
self.parent = root
self.configure(width=300,height=300)
self.pack()
self.bind("<Motion>", self.onmotion)
def onmotion(self, event):
self.parent.title("Mouse at %s,%s"%(event.x, event.y))
root = Tk()
frame = MyFrame(root)
root.title("Event test")
root.mainloop()