Python 在tkinter中解除绑定函数后如何再次绑定?

Python 在tkinter中解除绑定函数后如何再次绑定?,python,tkinter,tkinter-canvas,Python,Tkinter,Tkinter Canvas,在用户使用另一个函数选择图像上的一些点之后,我尝试将一个按钮绑定到另一个函数。现在,我就是这样做的- canvas.bind("<Button-1>", func1) canvas.unbind("<Button-1>") canvas.bind("<Button-1>", func2) canvas.bind(“,func1) canvas.unbind(“”) canvas.bind(“,fun

在用户使用另一个函数选择图像上的一些点之后,我尝试将一个按钮绑定到另一个函数。现在,我就是这样做的-

canvas.bind("<Button-1>", func1)
canvas.unbind("<Button-1>")
canvas.bind("<Button-1>", func2)
canvas.bind(“,func1)
canvas.unbind(“”)
canvas.bind(“,func2)
这并不能解决我的问题,因为只有func2正在执行。我还尝试将unbind语句添加到func1和func2(在满足某些条件后运行),但同样的情况也发生了。是否有一种方法可以按顺序执行此运行,以便我可以使用func1->unbind func1->bind with func2->unbind func2进行绑定


我只想在一个图像中进行点选择,而无需将图像再次放在画布上。还有,有没有更好的方法来解决这个问题?

看看这个例子,在这个例子中,一旦在根窗口上单击两次,就会使用
func2

from tkinter import *

root = Tk()

count = 0
def func1(event):
    global count
    count += 1
    print('FUNC1')
    
    if count == 2:
        root.unbind('<Button-1>')
        root.bind('<Button-1>',func2)
        count = 0

def func2(event):
    print('FUNC2') #you can create similar logic to switch back to func1 here too 

root.bind('<Button-1>',func1)

root.mainloop()
从tkinter导入*
root=Tk()
计数=0
def func1(事件):
全局计数
计数+=1
打印('FUNC1')
如果计数=2:
root.unbind(“”)
root.bind(“”,func2)
计数=0
def func2(事件):
打印('FUNC2')#您也可以在此处创建类似的逻辑以切换回func1
root.bind(“”,func1)
root.mainloop()

使用计数器是一种简单的方法,不确定这是否是您想要的,但您可以从这里得到一个想法。

“这是失败的,因为func1和func2同时运行。”-这是一个错误的评估。只有第二个绑定将处于活动状态。请提供一个完整的,说明你认为正在发生的事情。对不起,我打错了。只有func2正在执行,我已更新问题。请提供一个。你的描述不清楚。如果先绑定到func1,然后再绑定到func2,则无论是否调用unbind,只有func2将运行。我不知道这是你想要的,还是你不想要的。我很快会提供一个例子。我想首先运行func1(绑定到按钮1),然后在用户选择2个点后,我从func1解除绑定并使用func2(按钮1)绑定。我想一个接一个地运行这两个函数。请看,当python运行代码时,它首先绑定到func1,然后解除绑定,然后再次绑定到func2,所有这些都会同时发生,因此只有最后一个绑定生效,您需要某种事件来触发这些绑定和解除绑定