无法通过用户输入 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")
这是我使用 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")