Python、海龟图形、键绑定

cnh2zyt3  于 2023-01-29  发布在  Python
关注(0)|答案(3)|浏览(202)

我试图找出一种方法,使它当我按住一个关键的球员将不断移动,或只是有球员不断前进,只是海龟图形,(我也有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()
nwo49xxi

nwo49xxi1#

您只需将wn添加到

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

wn.listen()
wn.mainloop()

希望这能有所帮助!

vom3gejh

vom3gejh2#

我建议你阅读this post on repeating key events,首先确定你的操作系统是否提供按键重复,你是否可以/想要调整它和/或如何关闭它来实现你自己的按键重复行为,该链接包括在turtle中实现你自己的按键重复行为的代码。
我已经修改了下面的代码,按键重复对我来说很好,因为我的操作系统(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中,我可以在系统首选项的键盘面板中控制速率(并将其关闭)。看看你的OS提供了什么。
一些编程注意事项:避免以两种不同的方式导入同一个模块,这总是会导致混淆。如果你发现你在键盘事件之间以高重复率发生干扰,请考虑以下三个事件处理程序:

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

k3fezbri3#

如果你使用的是python 3,那么你应该使用wn.onkeypress()onkey()函数在按键被按下然后释放时被触发,而onkeypress()函数在按键被按下时立即被触发。

相关问题