Черепаха графика onkeyrelease()
Невозможно реализовать onkeyrelease()
из модуля Python turtle. Пожалуйста, порекомендуйте. Сообщение об ошибке:'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)
1 ответ
Я предполагаю, основываясь на сообщении об ошибке, что вы используете Python 2 и onkeyrelease()
это метод Python 3. Несмотря на это:
Артефакт перехода с Python 2 на Python 3, 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.