删除和更改tkinter事件绑定
如何停止事件的处理或切换事件的功能?
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()
使用事件的新功能再次调用即可。既然你没有利用第三个参数,add
在bind()
此只是简单地覆盖任何已经存在。默认情况下,此参数为,''
但它也接受"+"
,它将在该事件已触发的回调中添加回调。
但是,如果您开始使用该可选参数,则需要使用该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>")
以上是 删除和更改tkinter事件绑定 的全部内容, 来源链接: utcz.com/qa/421023.html