Python tkinker解绑不';我似乎没有解开束缚
我有以下代码:Python tkinker解绑不';我似乎没有解开束缚,python,tkinter,tkinter-canvas,Python,Tkinter,Tkinter Canvas,我有以下代码: def on_click(event=None): c.unbind('<Button-1>') c.config(background="red") print ("You clicked the square") time.sleep(delay) c.config(background="green") c.bind('<Button-1>', on_click) root.update() r
def on_click(event=None):
c.unbind('<Button-1>')
c.config(background="red")
print ("You clicked the square")
time.sleep(delay)
c.config(background="green")
c.bind('<Button-1>', on_click)
root.update()
root = tk.Tk()
c = tk.Canvas(root, width=200, height=200, background="green")
c.pack()
c.bind('<Button-1>', on_click)
root.mainloop()
单击时定义(事件=无):
c、 解除绑定(“”)
c、 配置(背景=“红色”)
打印(“您单击了正方形”)
时间。睡眠(延迟)
c、 配置(背景=“绿色”)
c、 绑定(“”,单击时)
root.update()
root=tk.tk()
c=tk.Canvas(根,宽度=200,高度=200,背景=“绿色”)
c、 包()
c、 绑定(“”,单击时)
root.mainloop()
当我点击画布时,它是红色的(未绑定),当睡眠完成时,它会打印“你点击了正方形”
我已经在这里尝试过这种方法:
但是没有结果,因为我仍然可以单击正方形,当它是红色时从中获取打印,然后冻结应用程序。冻结时,事件会继续添加到队列中,而不进行处理。睡眠完成后,您立即在队列有机会处理事件之前重新建立绑定。在处理事件时,绑定将已经重新建立 一般来说,在GUI程序中不应该调用
sleep
,这是一个很好的例子
如果要在短时间内取消绑定,然后将其重置,请取消绑定,然后使用after
在给定时间段后将其重置
def on_click(event=None):
c.unbind('<Button-1>')
c.config(background="red")
c.after(delay, enable_binding)
def enable_binding():
c.config(background="green")
c.bind('<Button-1>', on_click)
单击时定义(事件=无):
c、 解除绑定(“”)
c、 配置(背景=“红色”)
c、 之后(延迟,启用_绑定)
def enable_binding():
c、 配置(背景=“绿色”)
c、 绑定(“”,单击时)
单击时,将调用函数并更改颜色并取消绑定事件。然后,事件循环有机会处理颜色更改和处理其他事件。一旦时间过去,您的函数将被调用,事件将被重新绑定。谢谢!这解决了问题,甚至减少了我的代码,谢谢你这么快回答。