Turtle-Graphics OnClick () немедленно вызывает функцию - PullRequest
0 голосов
/ 07 декабря 2018

Код, который я написал, должен просто подождать, пока пользователь не нажмет на черепаху, а затем перейти к (1000, 1000).

import turtle

ras = turtle.Turtle()
win = turtle.Screen()

win.bgcolor("black")
ras.color("blue")
ras.onclick(ras.goto(1000,1000))

win.mainloop()

Но это не так, он сразу же отключается, не нажимая на него.

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Чтобы это работало, вам нужно заменить

ras.onclick(ras.goto(1000,1000))

на:

ras.onclick(lambda x, y: ras.goto(1000, 1000))

Это передает функцию onclick() вместо None, который возникает в результате вызова функции.Он также предоставляет аргументы x и y, необходимые для обработчиков onclick(), независимо от того, нужны они или нет.

0 голосов
/ 07 декабря 2018

Я думаю, что вызов его как:

ras.onclick(lambda: ras.goto(1000,1000))

будет работать.Причина, по которой он вызывается, заключается в том, что ... ну, вы его вызываете!

Когда вы делаете ras.goto(1000,1000) вне контекста функции, он вызывает метод

...