无法通过用户输入 python turtle 停止循环

can't stop loop with user input python turtle

这是我使用 python 海龟包的代码:

#setup
import turtle
wn = turtle.Screen()
obj = turtle.Turtle()
go = True


def restart(x, y, go = go):
    go = False
    print(go)
wn.onscreenclick(restart)
wn.listen()

#main loop
while go:
    wn.update()
    obj.forward(0.1)

print("game ended")

当我点击屏幕时,它应该停止执行代码。 循环不会停止,也不会说 "game ended" 我不知道为什么。

我需要帮助。 谢谢!

您在 restart 函数中定义了一个局部变量 go,当您将其设置为 False 时,您只是更改了局部变量的值,而不是 go 来自外部作用域的变量

def restart(x, y, go=go):  # This keyword argument is creating a local variable

只需删除参数,然后您将修改正确的变量

def restart(x, y):
    go = False

除了@IainShelvington 指出的全局变量问题,我建议您重新设计程序以使用海龟计时器事件:

from turtle import Screen, Turtle

def restart(x, y):
    global running
    running = False

def move():
    if running:
        turtle.forward(0.1)
        screen.ontimer(move)
    else:
        screen.bye()

turtle = Turtle()

screen = Screen()
screen.onscreenclick(restart)

running = True

move()

screen.mainloop()

print("game ended")