You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Python 3.6 Turtle模块中在画布显示海龟坐标

在Turtle屏幕上实时显示海龟坐标的解决方案

我来帮你搞定这个问题!你遇到的「名称未定义」错误,主要是代码里有几个小问题没处理好——比如用了不存在的变量、调用了错误的方法,咱们一步步修正:

原代码里的问题点

  • 你提到的follow变量完全没在代码里创建过,调用follow.coor()肯定会报错
  • Turtle获取海龟坐标的正确方法是position(),不是coor()
  • 你需要用海龟对象的write()方法来绘制文本,而不是试图用坐标值去操作颜色和位置

修正后的完整代码

from turtle import Turtle, Screen

# 初始化屏幕
play = Screen()
play.bgcolor("black")
play.screensize(250, 250)
play.title("Turtle Keys")

# 创建可移动的海龟角色
run = Turtle("triangle")
run.speed("fastest")
run.color("white")
run.penup()
run.setposition(250, 250)

# 创建专门用来显示坐标的文本海龟(隐藏光标,只显示文字)
coord_pen = Turtle()
coord_pen.hideturtle()
coord_pen.color("white")
coord_pen.penup()
coord_pen.setposition(130, 100)  # 设定文本显示的位置

def update_coordinates():
    # 获取当前海龟的坐标,解包为x和y值
    x, y = run.position()
    # 清除之前的文本,避免重叠显示
    coord_pen.clear()
    # 写入格式化后的坐标文本,保留两位小数更清晰
    coord_pen.write(f"当前坐标: ({x:.2f}, {y:.2f})", 
                   align="center", 
                   font=("Arial", 12, "normal"))
    # 每隔100毫秒自动更新一次坐标
    play.ontimer(update_coordinates, 100)

# 额外添加键盘控制(方便测试坐标变化)
def move_up():
    run.sety(run.ycor() + 10)

def move_down():
    run.sety(run.ycor() - 10)

def move_left():
    run.setx(run.xcor() - 10)

def move_right():
    run.setx(run.xcor() + 10)

# 绑定键盘按键到移动函数
play.onkey(move_up, "Up")
play.onkey(move_down, "Down")
play.onkey(move_left, "Left")
play.onkey(move_right, "Right")
play.listen()

# 启动坐标更新循环
update_coordinates()

# 保持屏幕持续显示
play.mainloop()

关键代码解释

  • coord_pen是专门负责显示文本的海龟,用hideturtle()隐藏了光标,只展示文字内容
  • run.position()会返回一个包含x、y坐标的元组,直接解包就能拿到具体数值
  • write()方法的三个核心参数:align控制文本对齐方式,font设定字体样式、大小和粗细
  • ontimer()用来定时触发坐标更新,确保海龟移动时文本能实时刷新
  • 额外添加的键盘控制功能,让你可以通过方向键移动海龟,直观看到坐标变化

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

火山引擎 最新活动