当前位置: 首页 > 面试题库 >

删除和更改tkinter事件绑定

羿经武
2023-03-14
问题内容

如何停止事件的处理或切换事件的功能?

修改后的代码:

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>")


 类似资料:
  • 本文向大家介绍jQuery unbind 删除绑定事件详解,包括了jQuery unbind 删除绑定事件详解的使用技巧和注意事项,需要的朋友参考一下 unbind([type],[data]) 是 bind()的反向操作,从每一个匹配的元素中删除绑定的事件。如果没有参数,则删除所有绑定的事件。你可以将你用bind()注册的自定义事件取消绑定。如果提供了事件类型作为参数,则只删除该类型的绑定事件。

  • 本文向大家介绍JQuery中绑定事件(bind())和移除事件(unbind()),包括了JQuery中绑定事件(bind())和移除事件(unbind())的使用技巧和注意事项,需要的朋友参考一下 有时候事件执行完了,想取消事件的效果可以通过一定的办法来处理。比如bind()(绑定事件)和unbind()(移除通过bind()方法添加的事件)方法来移除事件的效果。 比如下面的一个案例: html

  • 本文向大家介绍浅谈jquery之on()绑定事件和off()解除绑定事件,包括了浅谈jquery之on()绑定事件和off()解除绑定事件的使用技巧和注意事项,需要的朋友参考一下 off()函数用于移除元素上绑定的一个或多个事件的事件处理函数。 off()函数主要用于解除由on()函数绑定的事件处理函数。 该函数属于jQuery对象(实例)。 语法 jQuery 1.7 新增该函数。其主要有以下两

  • 本文向大家介绍js绑定事件和解绑事件,包括了js绑定事件和解绑事件的使用技巧和注意事项,需要的朋友参考一下 在js中绑定多个事件用到的是两个方法:attachEvent和addEventListener,但是这两个方法又存在差异性 attachEvent方法  只支持IE678,不兼容其他浏览器 addEventListener方法   兼容火狐谷歌,不兼容IE8及以下 addEventListe

  • 问题内容: 我将一些数据存储在localStorage中 我想在我的angularjs应用程序中看到的是,当localStorage中的数据更改时,该应用程序会重新渲染该应用程序,我该怎么做? 问题答案: 有一个角度的localStorage模块: https://github.com/grevory/angular-local- storage 经过进一步考虑,您可能需要将模块更改为在setIt

  • 本文向大家介绍addEventListener()和removeEventListener()追加事件和删除追加事件,包括了addEventListener()和removeEventListener()追加事件和删除追加事件的使用技巧和注意事项,需要的朋友参考一下 addEventListener()与removeEventListener()用于追加事件和删除追加。所有的DOM节点中都包含这两