Python 2.7 Python图形键盘命令

Python 2.7 Python图形键盘命令,python-2.7,keyboard-events,turtle-graphics,Python 2.7,Keyboard Events,Turtle Graphics,有人对用键盘命令在Python2.7中控制海龟图形有什么见解吗?我在这个网站和其他网站上做了大量的研究,我觉得我做的是对的,但它不想为我工作。下面是我到目前为止的情况,有人能告诉我哪里出了问题吗 from turtle import * turtle.setup(500, 500) wn = turtle.Screen() wn.title("Turtle Keys") move = turtle.Turtle() showturtle() def k1(): move.forward(45)

有人对用键盘命令在Python2.7中控制海龟图形有什么见解吗?我在这个网站和其他网站上做了大量的研究,我觉得我做的是对的,但它不想为我工作。下面是我到目前为止的情况,有人能告诉我哪里出了问题吗

from turtle import *
turtle.setup(500, 500)
wn = turtle.Screen()
wn.title("Turtle Keys")
move = turtle.Turtle()
showturtle()

def k1():
move.forward(45)

def k2():
move.left(45)

def k3():
move.right(45)

def k4():
move.back(45)

wn.onkey(k1, "Up")
wn.onkey(k2, "Left")
wn.onkey(k3, "Right")
wn.onkey(k4, "Down")

wn.listen()

当您指定import*时,您不必使用turtle.,还必须使用mainloop()read(无限循环)来监视用户交互,在您的示例中,wn也是不必要的

这是工作代码

from turtle import *
setup(500, 500)
Screen()
title("Turtle Keys")
move = Turtle()
showturtle()

def k1():
    move.forward(45)

def k2():
    move.left(45)

def k3():
    move.right(45)

def k4():
    move.back(45)

onkey(k1, "Up")
onkey(k2, "Left")
onkey(k3, "Right")
onkey(k4, "Down")

listen()
mainloop()

当您指定import*时,您不必使用turtle.,还必须使用mainloop()read(无限循环)来监视用户交互,在您的示例中,wn也是不必要的

这是工作代码

from turtle import *
setup(500, 500)
Screen()
title("Turtle Keys")
move = Turtle()
showturtle()

def k1():
    move.forward(45)

def k2():
    move.left(45)

def k3():
    move.right(45)

def k4():
    move.back(45)

onkey(k1, "Up")
onkey(k2, "Left")
onkey(k3, "Right")
onkey(k4, "Down")

listen()
mainloop()
我最近才想到这个。希望有帮助


我最近才想到这个。希望有帮助

我发现,使用上面的代码和我的示例代码,在单击窗口之前,按键没有注册。在我的例子中,海龟会移动,但左/右动作直到我点击窗口才会发生

import turtle

def rightTurn():
   bob.rt(90)

def leftTurn():
   bob.lt(90)


wn=turtle.Screen()
wn.bgcolor('lightblue')

bob=turtle.Turtle()

wn.onkeypress(rightTurn, "Right")
wn.onkeypress(leftTurn, "Left")
wn.listen()


while True:
   bob.fd(1)

我发现,使用上面的代码和我的示例代码,在我单击窗口之前,按键没有注册。在我的例子中,海龟会移动,但左/右动作直到我点击窗口才会发生

import turtle

def rightTurn():
   bob.rt(90)

def leftTurn():
   bob.lt(90)


wn=turtle.Screen()
wn.bgcolor('lightblue')

bob=turtle.Turtle()

wn.onkeypress(rightTurn, "Right")
wn.onkeypress(leftTurn, "Left")
wn.listen()


while True:
   bob.fd(1)

发出如下命令时:

move = turtle.Turtle()
showturtle()
你实际上在和两个不同的乌龟说话,你的乌龟对象在“移动”和默认的乌龟。大多数screen和default方法都可以在没有显式对象的情况下调用,因为它们也是顶级函数。为避免混淆,我建议您始终以以下方式导入海龟:

from turtle import Turtle, Screen
并显式创建自己的海龟和屏幕对象。这样,您将无法调用替代函数,也不会感到困惑。重写您的示例时,请牢记上述内容:

from turtle import Turtle, Screen

screen = Screen()

screen.setup(500, 500)
screen.title("Turtle Keys")

move = Turtle(shape="turtle")

def k1():
    move.forward(10)

def k2():
    move.left(45)

def k3():
    move.right(45)

def k4():
    move.backward(10)

screen.onkey(k1, "Up")
screen.onkey(k2, "Left")
screen.onkey(k3, "Right")
screen.onkey(k4, "Down")

screen.listen()

screen.exitonclick()

发出如下命令时:

move = turtle.Turtle()
showturtle()
你实际上在和两个不同的乌龟说话,你的乌龟对象在“移动”和默认的乌龟。大多数screen和default方法都可以在没有显式对象的情况下调用,因为它们也是顶级函数。为避免混淆,我建议您始终以以下方式导入海龟:

from turtle import Turtle, Screen
并显式创建自己的海龟和屏幕对象。这样,您将无法调用替代函数,也不会感到困惑。重写您的示例时,请牢记上述内容:

from turtle import Turtle, Screen

screen = Screen()

screen.setup(500, 500)
screen.title("Turtle Keys")

move = Turtle(shape="turtle")

def k1():
    move.forward(10)

def k2():
    move.left(45)

def k3():
    move.right(45)

def k4():
    move.backward(10)

screen.onkey(k1, "Up")
screen.onkey(k2, "Left")
screen.onkey(k3, "Right")
screen.onkey(k4, "Down")

screen.listen()

screen.exitonclick()

正如预期的那样,完全遵循了代码和函数。但我试着以我熟悉的方式接近海龟导入海龟>>>海龟.fd(0)。然后我创建一个方向函数,然后调用onkey函数,将方向函数和键名作为参数传递,然后得到一个回溯错误。为什么会发生这种情况?请参阅我关于
move=Turtle()的回答;showturtle()
,因为它解释了为什么这会导致屏幕上显示两个海龟而不是一个海龟。而您的
Screen()
调用不会添加任何内容。我相信导入turtle*是合理的,因为它是为初学者设计的,所以我在回答中推荐一种替代方法来避免这些错误。正如预期的那样,完全遵循和代码函数。但我试着以我熟悉的方式接近海龟导入海龟>>>海龟.fd(0)。然后我创建一个方向函数,然后调用onkey函数,将方向函数和键名作为参数传递,然后得到一个回溯错误。为什么会发生这种情况?请参阅我关于
move=Turtle()的回答;showturtle()
,因为它解释了为什么这会导致屏幕上显示两个海龟而不是一个海龟。而您的
Screen()
调用不会添加任何内容。虽然我相信导入turtle*是合理的,但由于它是为初学者设计的,因此我建议在回答中使用另一种方法来避免此类错误。顺便说一句,image.gif不是必需的。如果你只想要一只turtle,那么就不要编写它。image.gif不是必需的。顺便说一句,如果你只想要一只turtle,那就别写了。