from tkinter import * root = Tk() root.title("Проверка after") c = Canvas(root, width=300, height=200, bg='white') c.pack() rect = c.create_rectangle(50, 50, 100, 100, fill='blue') # Флаг выполнения в виде списка (для доступа внутри замыкания) running_flag = [False] def move_rect(): if running_flag[0]: # Проверка флага c.move(rect, 2, 0) c.update() root.after(50, move_rect) def start_moving(): if not running_flag[0]: # Если функция ещё не выполняется running_flag[0] = True move_rect() def stop_moving(): running_flag[0] = False # Останавливаем выполнение start_button = Button(root, text="Start", command=start_moving) start_button.pack(side=LEFT) stop_button = Button(root, text="Stop", command=stop_moving) stop_button.pack(side=LEFT) root.mainloop()