Python中使用keydown / keyup的基本输入

时间:2016-09-26 17:07:23

标签: python events pygame

我目前正在尝试在python中创建一个小游戏,但是当我尝试使用keydown / keyup事件时,我的系统会将这两个事件解释为一个。我编写了一个简单的脚本来监视由'pygame'创建的事件(一个简化在python中制作游戏的模块),当我按下一个键时,它会立即显示python shell中的keydown和keyup事件:{{3 }}。这与我的键盘有关吗?

1 个答案:

答案 0 :(得分:0)

您在KEYDOWN事件之后立即发生KEYUP事件的问题是由主循环中的行display = pygame.display.set_mode((800, 600))引起的。该程序在循环的每次迭代中创建一个新的显示。这条线需要放在主循环之前,因为它应该放在主循环之前。这也与pygame.display.set_caption()相同,因为它只需要调用一次。

这样做可以解决您的KEYUP事件问题;但是,当Pygame初始化时,默认情况下禁用键重复,按住键仍然不起作用。要启用它,必须调用方法pygame.key.set_repeat(delay, interval)。这也应该在你的主循环之前。

在该方法中,值delay是按键的第一次重复发生之前的延迟(以毫秒为单位),如果设置为零,则将禁用键重复。值interval是第一次连续重复之间的时间。可以在here in the Pygame documantation找到相关文档,其描述如下:

  

启用键盘重复时,按下的键将生成多个pygame.KEYDOWN事件。延迟是第一次重复发送pygame.KEYDOWN之前的毫秒数。之后,每隔一个毫秒发送另一个pygame.KEYDOWN。如果没有传递参数,则禁用密钥重复。

     

初始化pygame时,键重复被禁用。

作为一个例子:pygame.key.set_repeat(1, 15)基本上没有延迟,应该提供一个大致平稳的旅行。