我只是想知道是否有任何可能的方法将Click事件绑定到Tkinter中的画布。
我希望能够在画布上的任何位置单击并让对象移动到它。我能够制作动作,但我还没有找到一种方法来在画布上绑定点击事件。
答案 0 :(得分:17)
直接从事件中的Effbot tutorial的示例中获取。
在这个例子中,我们使用框架小部件的bind方法将回调函数绑定到一个名为的事件。运行此程序并单击出现的窗口。每次单击时,都会在控制台窗口中打印“点击44 63”等消息。键盘事件将发送到当前拥有键盘焦点的窗口小部件。您可以使用focus_set方法将焦点移动到窗口小部件:
from Tkinter import *
root = Tk()
def key(event):
print "pressed", repr(event.char)
def callback(event):
print "clicked at", event.x, event.y
canvas= Canvas(root, width=100, height=100)
canvas.bind("<Key>", key)
canvas.bind("<Button-1>", callback)
canvas.pack()
root.mainloop()
更新:如果窗口/框架包含具有键盘焦点的Tkinter.Entry小部件之类的小部件,则上述示例将不适用于“键”事件。把:
canvas.focus_set()
'callback'函数中的会给画布小部件键盘焦点,并会导致后续的键盘事件调用'key'函数(直到其他小部件需要键盘焦点)。