Python 当一个事件绑定另一个事件时,如何停止回调?

Python 当一个事件绑定另一个事件时,如何停止回调?,python,python-3.x,events,tkinter,tkinter-canvas,Python,Python 3.x,Events,Tkinter,Tkinter Canvas,我有一个画布框架,它的鼠标左键被绑定到一些动作上 canvas_frame = tk.Canvas(self) # Master is tk.Frame self.canvas_frame.tag_bind('some_tag', '<ButtonPress-1>', self.some_action) def some_action(self): #do something self.canvas_frame.bind('<ButtonPress-1&g

我有一个画布框架,它的鼠标左键被绑定到一些动作上

canvas_frame = tk.Canvas(self)  # Master is tk.Frame

self.canvas_frame.tag_bind('some_tag', '<ButtonPress-1>', self.some_action)

def some_action(self):
    #do something
    self.canvas_frame.bind('<ButtonPress-1>', self.another_action)
canvas_frame=tk.canvas(self)#Master是tk.frame
self.canvas\u frame.tag\u bind('some\u tag','',self.some\u action)
定义一些动作(自我):
#做点什么
self.canvas\u frame.bind(“”,self.other\u action)
每当我左键单击某个标签时,就会执行另一个操作。即使在
另一个_操作
最初绑定时第一次单击


有没有办法阻止另一个动作的执行?

有多种方法可以做到这一点,哪种方法最合适取决于您的用例

  • 不要绑定self.buttonPress-1中的另一个_操作,而是将其绑定到buttonRelease-1中

  • 按您所做的方式绑定它,但self.u中有一个局部变量。另一个_操作跟踪第一次调用,并且在第一次调用时不执行任何操作(返回)

  • 与其在buttonPress-1中设置绑定,不如设置一个变量,指示应进行额外绑定。然后在其他地方进行绑定,例如在Tk.after()的下一次调用中


  • 使用:
    self.canvas\u frame.after(0,self.canvas\u frame.bind',self.other\u action)
    允许当前事件完成。