Python,Turtle Graphics,键绑定

时间:2017-10-21 20:25:14

标签: python python-3.6 turtle-graphics

我试图找到一种方法来实现这一点,当我按住一个键时,玩家将不断移动,或者只是让玩家不断地使用龟图形向前移动(我确实安装了pygame) )

import turtle
from turtle import *

#Setup Screen
wn = turtle.Screen()
wn.setup(700,700)
wn.title("white")
wn.bgcolor("black")

#Create Player
player = turtle.Turtle()
player.penup()
player.shape("triangle")
player.color("white")

def forward():
    player.forward(20)

def lef():
    player.left(90)

def forward():
    player.right(90)

onkey(forward,"Up")
onkey(left,"Left")
onkey(right,"Right")

listen()

2 个答案:

答案 0 :(得分:1)

您只需将wn添加到

即可对其进行修复。
wn.onkey(forward, 'Up')
wn.onkey(left, 'Left')
wn.onkey(right, 'Right')

wn.listen()
wn.mainloop()

我希望这会有所帮助!

答案 1 :(得分:0)

我建议您阅读this post on repeating key events并首先确定您的操作系统是否提供重复键,以及您是否可以/想要调整它和/或如何将其关闭以实现自己的重复。该链接包含在龟中实现您自己的密钥重复行为的代码。

我已经重新编写了下面的代码并且密钥对我来说很好,因为我的操作系统(OSX)实现了密钥重复:

from turtle import Turtle, Screen

# Setup Screen
wn = Screen()
wn.setup(700, 700)
wn.title('white')
wn.bgcolor('black')

# Create Player
player = Turtle('triangle')
player.speed('fastest')
player.color('white')
player.penup()

def forward():
    player.forward(20)

def left():
    player.left(90)

def right():
    player.right(90)

wn.onkey(forward, 'Up')
wn.onkey(left, 'Left')
wn.onkey(right, 'Right')

wn.listen()
wn.mainloop()

在OSX中,我可以在“系统偏好设置”的“键盘”面板中控制速率(并将其关闭)。了解您的操作系统提供的内容。

一些编程注意事项:避免以两种不同的方式导入同一模块,这总会导致混淆。如果您发现您在高重复率的键盘事件之间受到干扰,请考虑以下所有三个事件处理程序:

def forward():
    wn.onkey(None, 'Up')  # disable event in handler
    player.forward(20)
    wn.onkey(forward, 'Up')  # reenable event