如何将Click事件绑定到Tkinter中的Canvas?

时间:2015-03-23 13:42:05

标签: python python-2.7 tkinter tkinter-canvas

我只是想知道是否有任何可能的方法将Click事件绑定到Tkinter中的画布。

我希望能够在画布上的任何位置单击并让对象移动到它。我能够制作动作,但我还没有找到一种方法来在画布上绑定点击事件。

1 个答案:

答案 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'函数(直到其他小部件需要键盘焦点)。