Когда вы создаете игры и хотите, чтобы пользователь двигался только один раз, даже если он продолжает нажимать клавишу, вы должны использовать событие onkeyrelease на любом языке программирования.
модуль turtle имеет свои собственные события, вы не Не нужно импортировать любой другой модуль.
Вот простой пример
import turtle
m = turtle.Turtle()
def step():
m.forward(50)
window = turtle.Screen()
window.onkeyrelease(step, "Right")
window.listen()
window.mainloop()
И здесь я сделал это для удовольствия, вы должны попробовать это:)
import turtle
t = turtle.Turtle()
step = 25
t.speed(0)
# set the angles according to the mode
t_angles = [180, 0, 90, 270] if turtle.mode() == "standard" else [270, 90, 0, 180]
# standard mode | logo mode
# 0 -> east | 0 -> north
# 90 -> north | 90 -> east
# 180 -> west | 180 -> south
# 270 -> south | 270 -> west
def t_left():
t.seth(t_angles[0])
t.forward(step)
def t_right():
t.seth(t_angles[1])
t.forward(step)
def t_up():
t.seth(t_angles[2])
t.forward(step)
def t_down():
t.seth(t_angles[3])
t.forward(step)
def t_hide(a, b): t.penup()
def t_show(a, b): t.pendown()
def t_white(): t.color("white")
def t_red(): t.color("red")
def t_green(): t.color("green")
def t_blue(): t.color("blue")
def t_yellow(): t.color("yellow")
def t_default(): t.color("black")
window = turtle.Screen()
# press arrows to move around
window.onkeyrelease(t_right, "Right")
window.onkeyrelease(t_left, "Left")
window.onkeyrelease(t_up, "Up")
window.onkeyrelease(t_down, "Down")
# press these for changing color
window.onkeyrelease(t_white, "w")
window.onkeyrelease(t_red, "r")
window.onkeyrelease(t_green, "g")
window.onkeyrelease(t_blue, "b")
window.onkeyrelease(t_yellow, "y")
window.onkeyrelease(t_default, "d")
# press Esc to quit
window.onkeyrelease(window.bye, "Escape")
# press left button of the mouse to put the pen
window.onclick(t_show, 1)
# press right button of the mouse to hold the pen
window.onclick(t_hide, 3)
# listen to all the events
window.listen()
# keep the window open
window.mainloop()