[英]Turtle gives error: AttributeError: 'Turtle' object has no attribute 'onkeyrelease'
[英]Turtle graphics onkeyrelease()
无法从 Python 的 turtle 模块实现onkeyrelease()
。 请指教。 错误消息: 'module' object has no attribute 'onkeyrelease'
。 尝试用turtle.onkeyrelease(stay, 'd')
替换wn.onkeyrelease(stay, 'd')
无济于事。
import turtle
speed = 0
wn = turtle.Screen()
wn.tracer(0)
box = turtle.Turtle()
box.shape('square')
box.penup()
def move_right():
global speed
speed = 2
def stay():
global speed
speed = 0
turtle.listen()
turtle.onkey(move_right, 'd')
turtle.onkey(stay, 's')
turtle.onkeyrelease(stay, 'd')
while True:
wn.update()
box.setx(box.xcor() + speed)
根据错误消息,我的猜测是您正在运行 Python 2 并且onkeyrelease()
是 Python 3 方法。 即使是这样:
从 Python 2 到 Python 3 的过渡产物,onkey onkey()
和onkeyrelease()
是同义词。 您可能想要的是onkeypress()
和onkeyrelease()
。 即使是这样:
也就是说,在按键按下和释放时尝试做不同的事情是否会起作用是不确定的。 在我的系统上,按下和释放都是由按键触发的。 由于操作系统的原因,您的结果可能会有所不同。
您最好使用两个键,'d' 开始动作,'s' 停止它:
from turtle import Screen, Turtle, mainloop
speed = 0
def move_faster():
global speed
speed = 2
def stay():
global speed
speed = 0
def move():
box.forward(speed)
screen.update()
screen.ontimer(move)
screen = Screen()
screen.tracer(False)
box = Turtle()
box.shape('square')
box.penup()
screen.onkey(stay, 's')
screen.onkey(move_faster, 'd')
screen.listen()
move()
mainloop()
此代码应在 Python 2 和 Python 3 下工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.