我制作了一个程序,我想在其中使用
onkey()
功能,但它不起作用,就像我键盘上的任何键都不起作用:
from turtle import*
import sys
s=Screen()
s.setup(500,500)
s.title("title")
x=Turtle(shape=image)
def e1():
print("hello")
s.bye()
def k1():
x.fd(40)
def k2():
x.lt(90)
def k3():
x.rt(90)
def k4():
x.bk(20)
s.onkey(e1,"Escape")
s.onkey(k1,"w")
s.onkey(k2,"a")
s.onkey(k3,"s")
s.onkey(k4,"z")
s.listen()
这也发生在我身上。我发现在 Spyder IDE 中,您需要首先导入“mainloop”,最后调用它,如 cdlane 上面所述;现在代码可以运行了!
from turtle import Turtle, Screen, mainloop
tim = Turtle()
screen = Screen()
def move_forwards():
tim.forward(10)
screen.listen()
screen.onkeypress(fun = move_forwards, key = "space")
mainloop()
除了缺少
image
变量之外,你的代码在 Python 2.7.10 下对我有用——我对你的代码进行了修改:
from turtle import Turtle, Screen, mainloop
def e1():
print("goodbye")
screen.bye()
def k1():
turtle.forward(40)
def k2():
turtle.left(90)
def k3():
turtle.right(90)
def k4():
turtle.backward(20)
screen = Screen()
screen.setup(500, 500)
screen.title("title")
turtle = Turtle(shape="turtle")
screen.onkey(e1, "Escape")
screen.onkey(k1, "w")
screen.onkey(k2, "a")
screen.onkey(k3, "s")
screen.onkey(k4, "z")
screen.listen()
mainloop()
一种可能性是您在尝试使用键盘之前没有单击海龟图形窗口。您需要通过单击乌龟窗口将其设置为活动侦听器,然后它应该响应键盘。如果您的击键显示在控制台窗口中,则可能是这种情况。
另一种可能性是,考虑到您的代码不以
mainloop()
或同等内容结尾,您正在 IDLE 之类的环境下运行,但您没有提及这可能会影响您的键盘输入事件。