Метод screen.onclick()
не работает таким образом:
if screen.onclick == (ty == 0 and 0 < tx < 50):
Есть ли у вас документация по черепахе?Метод onclick()
берет имя функции, вызываемой при щелчке, он ничего не возвращает.Кроме того, в одном из ваших вызовов turtle.pendown()
отсутствуют круглые скобки.
Наконец, пользователи не могут точно щелкнуть это:
if screen.onclick == (ty == 0 and ...):
Вероятность попадания 0 точно очень мала.Я переработал ваш код ниже, чтобы заставить его работать.Очевидно, у вас есть больше точек, чтобы сделать активными:
from turtle import Screen, Turtle, mainloop
def dotLine():
for _ in range(5):
t.fillcolor("black")
t.begin_fill()
t.circle(4)
t.end_fill()
t.penup()
t.forward(50)
t.pendown()
def makeGrid():
dotLine()
t.penup()
t.home()
t.setheading(90)
t.forward(50)
t.setheading(0)
dotLine()
t.penup()
t.home()
t.setheading(90)
t.forward(100)
t.setheading(0)
dotLine()
t.penup()
t.home()
t.setheading(90)
t.forward(150)
t.setheading(0)
dotLine()
t.penup()
t.home()
t.setheading(90)
t.forward(200)
t.setheading(0)
dotLine()
def onclick_handler(x, y):
t.penup()
# point 1
if 0 < x < 50 and 0 < y < 50:
t.goto(0, 0)
t.pendown()
t.forward(50)
# point 2
elif 50 < x < 100 and 0 < y < 50:
t.goto(50, 0)
t.pendown()
t.forward(50)
# point 3
elif 100 < x < 150 and 0 < y < 50:
t.goto(100, 0)
t.pendown()
t.forward(50)
# point 4
elif 150 < x < 200 and 0 < y < 50:
t.goto(150, 0)
t.pendown()
t.forward(50)
# point 5
elif 200 < x < 250 and 0 < y < 50:
t.goto(200, 0)
t.pendown()
t.forward(50)
screen = Screen()
t = Turtle(visible=False)
t.speed('fastest')
makeGrid()
screen.onclick(onclick_handler)
t.showturtle()
mainloop()
Если пользователь должен щелкнуть больше точек, чем в настоящее время включено в вашу программу, то я бы поступил по-другому.Я бы сделал каждую точку своей черепахой, а затем обработчик событий onclick()
на экране опрашивал всех черепах методом turtle.distance()
, чтобы найти двух ближайших к нажатой точке.Тогда вам не нужно выполнять какие-либо математические операции по расшифровке, поскольку черепахи справятся с этим.