Использование onscreen.click () в turtle, но работает только в конце программы - PullRequest
0 голосов
/ 15 апреля 2020

Это программа, которую я написал, но я не уверен, что не так: -

import turtle
import random

bob = turtle.Turtle()
screen = turtle.Screen()

def coord(x,y):
    print(x,y)
    turtle.onscreenclick(None)

turtle.onscreenclick(coord)
turtle.listen()

print('hello')
turtle.done()

Программа работает нормально, за исключением того, что сначала выполняется печать ('привет'), а затем на экране событие. Как сделать так, чтобы событие на экране происходило раньше остальной части моей программы?

1 Ответ

0 голосов
/ 15 апреля 2020

Вы можете просто сделать оставшуюся часть кода частью функции coord:

def coord():
    print(x,y)
    turtle.onscreenclick(None)
    print("Hello")
    # The rest of your program goes here.

Однако стоит отметить следующее:

  • Это не так Удивительное элегантное решение, особенно если вы собираетесь устанавливать другие события в своем коде. Отслеживать это может быть довольно сложно.
  • Обязательно, чтобы вы удалили привязку события (в этом случае привязка coord к onscreenclick), как только она была использована, иначе вы можете закончить с несколькими экземплярами одного и того же кода, работающими одновременно, например, если кто-то дважды щелкнул по экрану. В вашем случае вы уже сделали это (с turtle.onscreenclick(None)), но об этом нужно помнить.
  • Если вы решите go этот маршрут, не забудьте переименовать coord Функционируйте что-то более репрезентативное, что будет делать этот раздел вашего кода.
...