我已经编写了一个程序,要在其中使用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()
答案 0 :(得分:1)
这也发生在我身上。我发现在 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()
答案 1 :(得分:0)
除了缺少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这样的环境下运行,而您没有提到这可能会影响键盘输入事件。