删除和更改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

