bind выполняется в начале запуска программы
Как сделать, чтобы бинд относился и к каждому новому кубику, а не только к первому
P.S. Если не сложно, то расскажите как можно упросить и улучшить код
from tkinter import * root=Tk() def click(): c.delete("all") brick=c.create_polygon((135,135),(165,135),(165,165),(135,165),fill='black',outline='') c=Canvas(root, width=300,height=300,bg='grey') c.pack() c.focus_set() brick=c.create_polygon((135,135),(165,135),(165,165),(135,165),fill='black',outline='') def prov(): x=0 if c.coords(brick)[2]<25 or c.coords(brick)[2]>300 : c.delete(brick) text=c.create_text(150,150, text="Вы вышли за границы!\nНажмите Enter,чтобы начать!") c.bind('w',lambda e:c.move(brick,0,-30)) c.bind('w',lambda e:prov(), "+" ) c.bind('s',lambda e:c.move(brick,0,30),prov()) c.bind('s',lambda e:prov(),"+") c.bind('d',lambda e:c.move(brick,30,0),prov()) c.bind('d',lambda e:prov(),"+") c.bind('a',lambda e:c.move(brick,-30,0),prov()) c.bind('a',lambda e:prov(),"+") c.bind('x',lambda event:c.move(brick,30,30),prov()) c.bind('x',lambda event:prov(),"+") c.bind('z',lambda e:c.move(brick,-30,-30),prov()) c.bind('z',lambda e:prov(),"+") c.bind('<Enter>',lambda e:click()) root.mainloop()