删除和更改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()使用事件的新功能再次调用即可。既然你没有利用第三个参数,addbind()此只是简单地覆盖任何已经存在。默认情况下,此参数为,''但它也接受"+",它将在该事件已触发的回调中添加回调。

但是,如果您开始使用该可选参数,则需要使用该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

回到顶部