Вы звоните unbind
, затем замораживаете приложение. Пока он заморожен, события продолжают добавляться в очередь без обработки. Сразу после завершения сна вы заново устанавливаете привязку, прежде чем очередь сможет обработать события. Ко времени обработки событий привязка уже будет восстановлена.
Как правило, вы никогда не должны вызывать 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)
Когда вы нажимаете, вызывается ваша функция, вы меняете цвет и отменяете привязку к событию. Затем цикл обработки событий может обработать изменение цвета и обработать дополнительные события . По истечении этого времени ваша функция будет вызвана, и событие будет перепривязано.