[英]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.