在 Python 中检测 Turtle 模块中的按键
Detecting Keypresses in the Turtle module in Python
我想要它,所以我的向上键可以移动乌龟,我的 S 键可以清洁屏幕。此外,向上键命令有效:
import turtle
from turtle import Turtle, Screen
screen = Screen()
jack = Turtle("turtle")
jack.color("red", "green")
jack.pensize(10)
jack.speed(0)
def clean(x,y):
jack.clear()
def move():
jack.forward(100)
turtle.listen()
turtle.onkey(clean,"S")
turtle.onkey(move,"Up")
screen.mainloop()
@jasonharper 关于大写问题 (+1) 是正确的,但是当您以两种不同的方式导入 turtle 时,这段代码显然还有其他问题。 IE。您将 turtle 的 面向对象 API 与其 功能性 API 混合在一起。让我们重写代码以仅使用面向对象的 API:
from turtle import Screen, Turtle
def move():
turtle.forward(100)
screen = Screen()
turtle = Turtle('turtle')
turtle.color('red', 'green')
turtle.pensize(10)
turtle.speed('fastest')
screen.onkey(turtle.clear, 's')
screen.onkey(move, 'Up')
screen.listen()
screen.mainloop()
我更改了变量名以明确哪些方法是 screen 实例方法,哪些是 turtle 实例方法。您的双重导入掩盖了这一点。
我想要它,所以我的向上键可以移动乌龟,我的 S 键可以清洁屏幕。此外,向上键命令有效:
import turtle
from turtle import Turtle, Screen
screen = Screen()
jack = Turtle("turtle")
jack.color("red", "green")
jack.pensize(10)
jack.speed(0)
def clean(x,y):
jack.clear()
def move():
jack.forward(100)
turtle.listen()
turtle.onkey(clean,"S")
turtle.onkey(move,"Up")
screen.mainloop()
@jasonharper 关于大写问题 (+1) 是正确的,但是当您以两种不同的方式导入 turtle 时,这段代码显然还有其他问题。 IE。您将 turtle 的 面向对象 API 与其 功能性 API 混合在一起。让我们重写代码以仅使用面向对象的 API:
from turtle import Screen, Turtle
def move():
turtle.forward(100)
screen = Screen()
turtle = Turtle('turtle')
turtle.color('red', 'green')
turtle.pensize(10)
turtle.speed('fastest')
screen.onkey(turtle.clear, 's')
screen.onkey(move, 'Up')
screen.listen()
screen.mainloop()
我更改了变量名以明确哪些方法是 screen 实例方法,哪些是 turtle 实例方法。您的双重导入掩盖了这一点。