我如何停止处理事件或切换为它调用的函数?
修改后的代码:
from Tkinter import *
class GUI:
def __init__(self,root):
Window = Frame(root)
self.DrawArea = Canvas(Window)
self.DrawArea.pack()
Window.pack()
self.DrawArea.bind("<Button 1>",self.starttracking)
def updatetracking(self,event):
print event.x,event.y
def finishtracking(self,event):
self.DrawArea.bind("<Button 1>",self.starttracking)
self.DrawArea.unbind("<Motion>")
def starttracking(self,event):
print event.x,event.y
self.DrawArea.bind("<Motion>",self.updatetracking)
self.DrawArea.bind("<Button 1>",self.finishtracking)
if __name__ == '__main__':
root = Tk()
App = GUI(root)
root.mainloop()
最佳答案
您可以简单地使用事件的新函数再次调用 bind()
。由于您没有使用 bind()
中的第三个参数 add
,这只会覆盖已经存在的任何内容。默认情况下,此参数为 ''
,但它也接受 "+"
,这将为该事件已触发的回调添加一个回调。
如果您开始使用该可选参数,那么您将需要使用 unbind()
函数来删除单个回调。当您调用 bind()
时,会返回一个 funcid
。您可以将此 funcid
作为第二个参数传递给 unbind()
。
例子:
self.btn_funcid = self.DrawArea.bind("<Button 1>", self.my_button_callback, "+")
# Then some time later, to remove just the 'my_button_callback':
self.DrawArea.unbind("<Button 1>", self.btn_funcid)
# But if you want to remove all of the callbacks for the event:
self.DrawArea.unbind("<Button 1>")
关于python - 删除和更改 tkinter 事件绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6433369/