Сейчас у нас кружок строко привязан к мышке. Но мы можем сделать интереснее если просто заставим кружок следовать за мышью:

data = {
    "counter": 0,
    "mouse": (0, 0),
    "circle_location": (250, 100), # добавили реально пололжение кружка
    "speed": 6,  # добавили скорость
}


def update():
    # теперь пишем тут, двигаем кружок в сторону мыши
    cx, cy = data['circle_location']
    mx, my = data['mouse']

    # это так называемый вектор скорости
    vx = mx - cx
    vy = my - cy
    # считаем его длину
    length = math.sqrt(vx ** 2 + vy ** 2)

    # нормализуем координаты вектора, чтобы они были в пределах от 0 до 1
    vx /= length
    vy /= length

    # сдвигаем кружок в сторону мыши с указаной скоростью
    cx += vx * data['speed']
    cy += vy * data['speed']

    # фиксируем координаты кружка в data
    data['circle_location'] = (cx, cy)

пробуем запустить:

ну вроде ничего так, правда движение очень какое-то неесетственное получается. Можно сделать его более плавными если двигать объект не вектором скорости а вектором ускорения, тогда он уже не сможет мнгновенно менять своем ускорение и будет некоторое время двигаться по инерции.

Правим код

data = {
    "counter": 0,
    "mouse": (0, 0),
    "circle_location": (250, 100),
    "circle_velocity": (0, 0),  # добавили вектор скорости кружочка
    "speed": 3, # снизим скорость чуток
}

def update():
    cx, cy = data['circle_location']
    c_vx, c_vy = data['circle_velocity'] # вытаскиваем теперь еще и скорость
    mx, my = data['mouse']

    # тут ничего не меняем
    vx = mx - cx
    vy = my - cy
    length = math.sqrt(vx ** 2 + vy ** 2)
    vx /= length
    vy /= length

    # тут теперь пересчитываем c_vx и c_vy
    c_vx += vx * data['speed']
    c_vy += vy * data['speed']

    # тормозящий момент
    c_vx -= c_vx * 0.2
    c_vy -= c_vy * 0.2

    # сдвигаем cx и cy на c_vx и c_vy
    cx += c_vx
    cy += c_vy

    # фиксируем координаты и скорость кружка в data
    data['circle_velocity'] = (c_vx, c_vy)
    data['circle_location'] = (cx, cy)

тестим:

Задание

Реализуйте логику, чтобы кружок следовал не за мышью, а до точки в которую кликнули мышью (используйте событие <Button-1>). По достижении точки кружок должен прикратить свое движение.

Если получится то нарисовать вектор направления кружка