對於pygame的試試這個: http://www.pygame.org/docs/ref/key.html#pygame.key.set_repeat
我看來,像正是你要尋找的。
如果你不想這樣解決,你將不得不編寫一個線程,該線程從關鍵事件開始,停止在關鍵釋放事件上並在調用關鍵事件時反覆調用自身。這看起來有點像這樣:
from threading import Thread, Event
from time import sleep
class BtnRepeater(Thread)
def __init__(self, *args, **kw):
self.stop = Event()
if 'startdelay' in kw:
self.stdelay = kw.pop('startdelay')
else:
self.stdelay = 1 default delay
if 'repeatdelay' in kw:
self.rpdelay = kw.pop('startdelay')
else:
self.rpdelay = 0.2 default delay
Thead.__init__(self, *args, **kw)
def run(self):
sleep(self.stdelay)
while not self.stop.is_set():
# invoke event here
sleep(self.rpdelay)
def event_handler_btn_down(event):
# needs to be binded somewhen
br = BtnRepeater()
bind(event.key,'key_release',br.stop.set) # this is no real pygame call - but you probably know what I'm talking about
br.start()