如何调用函数在按键上打印Turtle的坐标?

问题描述 投票:0回答:1

我试图在每次移动时为我的乌龟打印新坐标,无论是在控制台还是在画布上,同时擦除旧坐标。如何在每次按键后调用函数在屏幕上打印坐标?

这是我到目前为止:

def writer(x, y):
    turtle1.write((x, y), align='center', font=FONT)
    turtle1.undo()

wn.onkey(writer, "Up")
wn.onkey(writer, "Down")
wn.onkey(writer, "Left")
wn.onkey(writer, "Right")
python python-3.x turtle-graphics
1个回答
0
投票

你的代码只是一厢情愿的想法。你错过了你的进口和其他重要细节(例如turtle1FONT的声明)。你假设onkey()将坐标传递给它的事件处理程序(它没有)。要做你想做的事情需要更多的设置。我会推荐两只乌龟,一只通过在屏幕上明显移动来响应键盘事件,另一只位于原点,写出第一只乌龟的坐标:

from turtle import Screen, Turtle

FONT_SIZE = 18

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

def move_up():
    wn.onkey(None, 'Up')  # disable handler inside handler
    turtle1.sety(turtle1.ycor() + 5)
    writer()
    wn.onkey(move_up, 'Up')

def move_down():
    wn.onkey(None, 'Down')
    turtle1.sety(turtle1.ycor() -5)
    writer()
    wn.onkey(move_down, 'Down')

def move_left():
    wn.onkey(None, 'Left')
    turtle1.setx(turtle1.xcor() - 5)
    writer()
    wn.onkey(move_left, 'Left')

def move_right():
    wn.onkey(None, 'Right')
    turtle1.setx(turtle1.xcor() + 5)
    writer()
    wn.onkey(move_right, 'Right')

def writer():
    turtle2.undo()
    turtle2.write(turtle1.position(), align='center', font=FONT)

turtle1 = Turtle('circle')
turtle1.penup()

turtle2 = Turtle(visible=False)
turtle2.penup()
turtle2.sety(-FONT_SIZE / 2)
turtle2.write(turtle1.position(), align='center', font=FONT)

wn = Screen()

wn.onkey(move_up, 'Up')
wn.onkey(move_down, 'Down')
wn.onkey(move_left, 'Left')
wn.onkey(move_right, 'Right')

wn.listen()
wn.mainloop()
© www.soinside.com 2019 - 2024. All rights reserved.