Python 2.7.13 turtle onkey函数不起作用

时间:2018-07-22 15:04:36

标签: python python-2.7 turtle-graphics

我已经编写了一个程序,要在其中使用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()

2 个答案:

答案 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()

enter image description here

一种可能是您在尝试使用键盘之前没有单击乌龟图形窗口。您需要通过单击将乌龟窗口设置为活动侦听器,然后应响应键盘。如果击键显示在控制台窗口中,则可能是这种情况。

考虑到您的代码未以mainloop()或等号结尾,另一种可能性是您正在像IDLE这样的环境下运行,而您没有提到这可能会影响键盘输入事件。