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

2024-10-02 08:14:59 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 模块脚本游戏系统事件code键盘pygame
1条回答
网友
1楼 · 发布于 2024-10-02 08:14:59

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

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

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

When the keyboard repeat is enabled, keys that are held down will generate multiple pygame.KEYDOWN events. The delay is the number of milliseconds before the first repeated pygame.KEYDOWN will be sent. After that another pygame.KEYDOWN will be sent every interval milliseconds. If no arguments are passed the key repeat is disabled.

When pygame is initialized the key repeat is disabled.

举个例子:pygame.key.set_repeat(1, 15)基本上没有延迟,并且应该提供一个基本平滑的旅行。在

相关问题 更多 >

    热门问题