Как вызвать функцию для печати координат Черепахи при нажатии клавиши? - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь печатать новые координаты для моей черепахи каждый раз, когда она движется, либо в консоли, либо на холсте, в то же время стирая старые координаты. Как вызвать функцию для печати координат на экране после каждого нажатия клавиши?

Это то, что я имею до сих пор:

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")

1 Ответ

0 голосов
/ 19 апреля 2019

Ваш код - просто желаемое за действительное.Вам не хватает импорта и других важных данных (например, декларации turtle1 и FONT).Вы предполагаете, что 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()
...