谢邀。
楼上一位答主的答案可以满足题主的需求。但是如果遇到较为复杂的情况,比如说:控制响应的间隔(你当然可以sleep,但是sleep只能显性地“添加”睡眠间隔,而不能严格控制“精确”的间隔),或者让不同的按键有不同的响应间隔,直接用while就不太靠谱了。这个问题我在Stack Overflow上面问过,当时有位大佬给出了pygame的原生方法----set_repeat的优缺点以及改进。干脆我就在这里补充一下。
总之,set_repeat接受两个参数delay和interval(什么单位自行查看),delay是第一次按下按键并产生效果的等待间隔,interval表示后续保持按键时每次效果的等待间隔。但是这个针对所有按键,不能自定义。
如果要自定义,就需要自己写,不能直接靠set_repeat了。其实这个改进就是在上面答主的while基础上改了一下(Stack Overflow上不去可以进这里https://paste.gnome.org/pm17hmkd8,一年有效):
上面是核心代码。onkeypress就是表示按键的效果(比如说飞机移动之类的)。我们首先还是要用set_repeat设定一个间隔,这个间隔建议是所有按键的间隔的最大公因数,比如说我这里设置一个10ms和一个1s,那么delay就设成10。然后我们对每一个“按下”按键的事件检查,如果这个按键在我们需要延迟1s的字典里面并且已经超过了1s,就触发效果;其余同理。
以上。