2013-05-13 1 views
1

내 게임 패드의 버튼을 누른 상태에서 홀드하면 특정 문자가 쓰여지고 반복되도록 프로그램을 만들려고합니다. 키보드가 작동하는 것처럼 버튼.Windows에서 Python으로 키 홀드 및 프레스 이벤트를 생성하는 방법

지금까지 필자가 원하는 모든 문자를 삽입 할 수 있었지만 어려운 부분은 계속 눌렀습니다.

나는 pyGame, win32api, win32con을 사용해 보았지만 유용하다고 생각하지 못했습니다. (어쩌면 나는이 라이브러리에 대해 완전히 이해하지 못했다)

또한 파이썬 프로그래밍에 관해서는 신참이다. 그래서 내 질문을 이해할 수 있도록 추가 정보가 필요하다면 알려주십시오.

감사합니다. 파이 게임에 대한

답변

1

이 하나의 시도 : 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() 
관련 문제