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()