Python 2.7.13 海龟 onkey 功能不起作用

问题描述 投票:0回答:2

我制作了一个程序,我想在其中使用

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()
python python-2.7 turtle-graphics python-turtle
2个回答
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()

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 之类的环境下运行,但您没有提及这可能会影响您的键盘输入事件。

© www.soinside.com 2019 - 2024. All rights reserved.