Python 如何在Tkinter中将单击事件绑定到画布?

Python 如何在Tkinter中将单击事件绑定到画布?,python,python-2.7,tkinter,tkinter-canvas,Python,Python 2.7,Tkinter,Tkinter Canvas,我只是想知道是否有任何可能的方法可以使用Tkinter将单击事件绑定到画布 我想能够点击画布上的任何地方,并有一个对象移动到它。我可以做这个动作,但我还没有找到一种方法将点击绑定到画布上。直接从事件的Effbot示例中获取 在本例中,我们使用frame小部件的bind方法将回调函数绑定到名为的事件。运行此程序并在出现的窗口中单击。每次单击时,控制台窗口都会显示一条消息,如“clicked at 44 63”。键盘事件被发送到当前拥有键盘焦点的小部件。您可以使用focus_set方法将焦点移动到小

我只是想知道是否有任何可能的方法可以使用Tkinter将单击事件绑定到画布


我想能够点击画布上的任何地方,并有一个对象移动到它。我可以做这个动作,但我还没有找到一种方法将点击绑定到画布上。

直接从事件的Effbot示例中获取

在本例中,我们使用frame小部件的bind方法将回调函数绑定到名为的事件。运行此程序并在出现的窗口中单击。每次单击时,控制台窗口都会显示一条消息,如“clicked at 44 63”。键盘事件被发送到当前拥有键盘焦点的小部件。您可以使用focus_set方法将焦点移动到小部件:


在“回调”函数中,将赋予画布小部件键盘焦点,并将导致后续键盘事件调用“键”函数(直到其他小部件获得键盘焦点)。

请仔细阅读Tkinter事件。这个问题不太广泛,应该重新讨论。(它可能是重复的,但这并不重要。我怀疑有人,或者更糟的是,某个程序看到了“好奇”这个词,并认为问题可能更广泛,
回调
函数为什么需要一个
focus\u set()
?@MalikBrahimi您根本不需要将焦点设置到帧上。您关联了
“”
事件与框架一起,因此只有在单击框架区域时才会调用
回调
。此外,OP要求在画布上绑定单击事件,而不是在框架上。如果您希望我删除否决票,您应该修改代码并通知我。放置画布和放置框架一样简单。@MalikBr在这一点上,我想请你展示一个完整的例子来说明OP的要求,这意味着当他点击画布时,如果我很好地理解了这个要求,某个物体会在那个位置移动。
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()
canvas.focus_set()