如何在画布上显示龟坐标

时间:2018-01-06 02:45:40

标签: python python-3.x turtle-graphics

使用Python 3.6和Turtle模块,我想知道如何在屏幕上打印乌龟的坐标。

我的问题是:如何在屏幕上打印文字,如何将该文字设为播放器的坐标?

这是我的代码。

from turtle import Turtle, Screen

play = Screen()

play.bgcolor("black")
play.screensize(250, 250)
play.title("Turtle Keys")

def position():
    coord = follow.coor()
    coord.color("white")
    coord.setposition(130, 100)

run = Turtle("triangle")
run.speed("fastest")
run.color("white")
run.penup()
run.setposition(250, 250)

print(position)

谢谢。

修改我尝试了write,但是它引发了一个未定义错误的名称。

4 个答案:

答案 0 :(得分:2)

以下是在屏幕上编写海龟位置的方法:必须在write对象上调用turtle模块中的Turtle方法。

import turtle

playground = turtle.Screen()       # use nouns for objects, play is a verb

playground.bgcolor("black")
playground.screensize(250, 250)
playground.title("Turtle Keys")

tom = turtle.Turtle()              # use nouns for objects, run is a verb

tom.color("white")
tom.setposition(130, 100)
tom.speed("fastest")
tom.color("white")

p = tom.pos()               # here you get the coordinates of the turtle
tom.write(str(p), True)     # and you print a string representation on screen
tom.penup()

print(p)                    # this prints to the console

playground.exitonclick()

enter image description here

答案 1 :(得分:1)

我处理这类问题的方法是将乌龟专用于屏幕上的每个固定标签。这样你就可以永久地在那个位置找到一只乌龟,然后只需undo()清除旧文本,然后write()来编写新文字。

这是一个动态示例,您可以使用鼠标在屏幕上拖动乌龟,并将当前位置写入屏幕中心:

from turtle import Turtle, Screen

FONT = ('Arial', 24, 'normal')

playground = Screen()
playground.setup(500, 500)
playground.bgcolor("black")

runner = Turtle("triangle")
runner.color("white")
runner.speed("fastest")
runner.penup()
runner.setposition(200, 200)

marker = Turtle(visible=False)  # our virtual magic marker
marker.penup()
marker.color("yellow")
marker.write(runner.position(), align='center', font=FONT)  # so we can undo it

def drag_handler(x, y):
    runner.ondrag(None)  # disable handler while in handler
    marker.undo()  # erase previous position
    marker.write((x, y), align='center', font=FONT)
    runner.setheading(runner.towards(x, y))  # head towards new location
    runner.setposition(x, y)
    runner.ondrag(drag_handler)

runner.ondrag(drag_handler)

playground.mainloop()

enter image description here

答案 2 :(得分:0)

使用函数xcor()ycor()获取坐标。使用功能write()在屏幕上书写。

请参阅文档:https://docs.python.org/3/library/turtle.html

答案 3 :(得分:-2)

也许这会有所帮助:

def write_pos(self, position):
    self.pu()
    self.bk(len(str(position))-len(str(position))/2)
    self.pd()
    self.write(str(position))
    self.pu()
    self.fd(len(str(position))-len(str(position))/2)
    self.pd()

write_pos(run, run.position())

确定。这是解释。

所以我定义了一个函数来写一些东西的位置(在这种情况下,乌龟)。

当我这样做时:

self.pu()
self.bk(len(str(position))-len(str(position))/2)

I:

  • 抬起笔并
  • 向后移动一些步骤,这样我就可以将文本居中。
然后我做了:

self.pd()
self.write(str(position))

其中:

  • 将笔放下并
  • 写入(或输出)职位

之后,当我这样做时:

self.pu()
self.fd(len(str(position))-len(str(position))/2)
self.pd()

I:

  • 拿起笔
  • 将其移回原位并
  • 再次放下笔

修改 我刚刚意识到你可以用这样一种更简单的方式来使用write

write(run.position(), False, center)

它写了海龟的位置,它没有移动,它仍然写着文字,但是它以慢跑为对齐的地方。

编辑#2:

我已经发现了问题。

您直接使用写入而不是实际从对象中调用它。你应该这样叫write

run.write(run.position(), align="center")