2012-03-22 4 views
3

입력을 얻기 위해 별도의 창을 표시 할 필요없이 콘솔에서 입력을 얻기 위해 파이 게임을 사용할 방법이 있습니까? 파이 게임을 사용하여 키보드의 키를 얼마나 길게 누르는 지 추적합니다.파이 게임을 사용하여 콘솔 입력 읽기

다음 코드는 (이것은 단지 최소한의 예입니다 실제로 경과 시간을 추적 유지하지 않습니다) 작동하지 않습니다

pygame.init() 

while 1: 
    for event in pygame.event.get(): 
     if event.type == pygame.KEYDOWN: 
      print event.key, 'pressed' 

그것은 어떤 파이 게임 이벤트처럼 보이지 않는이 제기되고있다 . 내가

다음 이벤트가 발생할

pygame.init()

screen = pygame.display.set_mode((640, 480)) 

을 추가 할 수 있지만 경우에 나는 무시 무시한 창 내가 처리하지 않는 것이 있습니다.

왜 내가 창을 원하지 않는지 설명하기 위해이 응용 프로그램을 명령 줄 유틸리티로 상상해 볼 수는 없습니다. Pygame이 명령 줄에서 실행되는 것을 방지하는 기능적인 이유가 있습니까?

감사합니다.

EDIT : 나는이 문제가 pygame.init()이고, 키와 이벤트 모듈을 초기화 할 필요가 있다고 추측했다. http://www.pygame.org/docs/tut/ImportInit.html에 따르면

pygame.key.init()
pygame.event.init()
에 전화 할 수 있었는데 작동하지 않아야했습니다.

답변

2

파이 게임은 (그래픽) 게임을 만들기 위해 설계되었으므로 창이 표시 될 때 키 누르기 만 캡처합니다. 이그나시오 (Ignacio)가 대답 한 바에 따르면 커맨드 라인과 다른 윈도우에서 읽는 것은 매우 다른 것들이다.

당신이 명령 줄 응용 프로그램을 만들려면 시도 저주 :

http://docs.python.org/library/curses.html

불행하게도, 그것은 단지

+0

하지만 [http : // stackoverflow.com/questions/4190544/detect-automatic-key-repeat-in-curses] (http://stackoverflow.com/questions/4190544/detect-automatic-key-repeats-in-curses), 나는 발견 할 수 없다. 열쇠가 눌려 지거나 눌려져 있습니다 ... –

+0

@Sam 별거 아닌가요? 어째서 그것을 왜 필요로합니까? – Mizipzor

+0

@mizipzor 키보드에서 Lilypond의 음표와 길이로 입력을 계량하는 프로그램을 디자인하려고했습니다. 따라서 사용자가 얼마나 오랫동안 키를 누르고 있는지를 알아야 어떤 노트 길이를 지정해야하는지 알 수 있습니다. –

0

콘솔 입력이 들어오는 리눅스 및 Mac OS X의 작동 파이 진이 처리 할 준비가되지 않은 stdin을 통해. 키 누르기를 보내는 터미널에 의존하기 때문에 stdin을 통해 보도/릴리스 이벤트를 얻을 수있는 확실한 방법은 없습니다.

0

모든 종류의 창을 원하지 않는다면 PyHook을 사용할 수 있습니다. 콘솔 애플리케이션을 원한다면 내장 파이썬 커맨드 "raw_input (...)"을 사용하여 사용자 입력을 얻으십시오.

0

시도 pygame.display.iconify() 파이 게임 화면을 숨기고 키 누르기를 감지 할 수 있습니다.

+0

시도했지만 작동하지 않습니다. 키보드 이벤트가 감지되지 않습니다. – ThePhi

1

그냥

화면을 사용하여 정말 작은 창 = pygame.display.set_mode 한 경우 ((1, 1))

당신이 그것을 볼 수 없습니다. 그래서 당신은 창문을 클릭했지만 눈치 채지 못합니다.

물론 아무 곳이나 클릭하면 작동이 멈 춥니 다. 다시 작동하려면 파이 게임 창 아이콘을 클릭해야합니다.

+0

간단하고 작동합니다. 감사. – ThePhi

관련 문제