如何在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




