You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将窗口坐标转换为Python Turtle的海龟坐标?

解决海龟跟随鼠标时移出屏幕的问题

问题核心是两种坐标系的差异:canvas.winfo_pointerxy()返回的是窗口左上角为原点的坐标,而turtle默认以窗口中心为原点,且Y轴方向相反(窗口Y向下递增,海龟Y向上递增),直接套用会导致海龟位置偏移出屏幕。

转换方法

  1. 获取画布的实际宽高,计算中心偏移量
  2. 将窗口坐标转换为海龟坐标:
    • 海龟X = 鼠标X - 画布宽度/2
    • 海龟Y = 画布高度/2 - 鼠标Y

修改后的完整代码

import turtle

t = turtle.Turtle()
canvas = turtle.getcanvas()

def follow_mouse():
    # 获取鼠标窗口坐标
    mouse_x, mouse_y = canvas.winfo_pointerxy()
    # 获取画布尺寸
    canvas_width = canvas.winfo_width()
    canvas_height = canvas.winfo_height()
    # 转换为海龟坐标
    turtle_x = mouse_x - canvas_width / 2
    turtle_y = canvas_height / 2 - mouse_y
    # 移动海龟
    t.goto(turtle_x, turtle_y)
    # 定时调用,持续跟踪鼠标
    turtle.ontimer(follow_mouse, 10)

# 启动跟踪
follow_mouse()
turtle.done()

注意事项

  • 避免用while True死循环,会阻塞turtle的事件处理,改用turtle.ontimer()实现周期性跟踪,运行更稳定
  • 如果窗口大小被手动调整,代码会自动获取最新的画布尺寸,无需额外处理

内容的提问来源于stack exchange,提问作者sbottingota

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 22:15:31