복붙노트

[PYTHON] 파이썬에서 키 누르기를 감지합니까?

PYTHON

파이썬에서 키 누르기를 감지합니까?

나는 파이썬에서 스톱워치 타입 프로그램을 만들고 있는데, 키가 눌려 졌는지 (멈춤 p와 멈춤 P와 같은)를 탐지하는 법을 알고 싶다. 그리고 나는 그것을 기다리는 raw_input과 같은 것이 좋을 것이다. 실행을 계속하기 전에 사용자의 입력. 누구든지 while 루프에서이 작업을 수행하는 방법을 알고 있습니까?

또한,이 크로스 플랫폼을 만들고 싶습니다,하지만 그게 가능하지 않다면, 내 주요 개발 대상은 리눅스입니다

해결법

  1. ==============================

    1.파이썬에는 많은 기능을 가진 키보드 모듈이 있습니다. 다음 명령을 사용하여 설치하십시오.

    파이썬에는 많은 기능을 가진 키보드 모듈이 있습니다. 다음 명령을 사용하여 설치하십시오.

    pip3 install keyboard
    

    그런 다음 다음과 같은 코드에서 사용하십시오.

    import keyboard #Using module keyboard
    while True:#making a loop
        try: #used try so that if user pressed other than the given key error will not be shown
            if keyboard.is_pressed('q'):#if key 'q' is pressed 
                print('You Pressed A Key!')
                break#finishing the loop
            else:
                pass
        except:
            break #if user pressed a key other than the given key the loop will break
    
  2. ==============================

    2.OP가 raw_input에 대해 언급 했으므로 CLI 솔루션을 원한다는 의미입니다. Linux : curses가 원하는 것입니다 (Windows PDCurses). Curses는 cli 소프트웨어 용 그래픽 API로 키 이벤트를 감지하는 것 이상의 기능을 수행 할 수 있습니다.

    OP가 raw_input에 대해 언급 했으므로 CLI 솔루션을 원한다는 의미입니다. Linux : curses가 원하는 것입니다 (Windows PDCurses). Curses는 cli 소프트웨어 용 그래픽 API로 키 이벤트를 감지하는 것 이상의 기능을 수행 할 수 있습니다.

    이 코드는 새 줄을 누를 때까지 키를 감지합니다.

    import curses
    
    def main(win):
        win.nodelay(True)
        key=""
        win.clear()                
        win.addstr("Detected key:")
        while 1:          
            try:                 
               key = win.getkey()         
               win.clear()                
               win.addstr("Detected key:")
               win.addstr(str(key)) 
               if key == os.linesep:
                  break           
            except Exception as e:
               # No input   
               pass         
    
    curses.wrapper(main)
    
  3. ==============================

    3.Windows의 경우 msvcrt를 다음과 같이 사용할 수 있습니다.

    Windows의 경우 msvcrt를 다음과 같이 사용할 수 있습니다.

       import msvcrt
       while True:
           if msvcrt.kbhit():
               key = msvcrt.getch()
               print(key)   # just to show the result
    
  4. ==============================

    4.PyGame을 사용하여 창을 만든 다음 키 이벤트를 가져올 수 있습니다.

    PyGame을 사용하여 창을 만든 다음 키 이벤트를 가져올 수 있습니다.

    편지 p의 경우 :

    import pygame, sys
    import pygame.locals
    
    pygame.init()
    BLACK = (0,0,0)
    WIDTH = 1280
    HEIGHT = 1024
    windowSurface = pygame.display.set_mode((WIDTH, HEIGHT), 0, 32)
    
    windowSurface.fill(BLACK)
    
    while True:
        for event in pygame.event.get():
            if event.key == pygame.K_p:
                 #Do what you want to here
                 pass
            if event.type == pygame.locals.QUIT:
                 pygame.quit()
                 sys.exit()
    
  5. ==============================

    5.나는 당신이 PyGame을 사용하고 이벤트 핸들을 추가 할 것을 제안한다.

    나는 당신이 PyGame을 사용하고 이벤트 핸들을 추가 할 것을 제안한다.

    http://www.pygame.org/docs/ref/event.html

  6. ==============================

    6.keypress를 감지하기 위해 리스너 또는 다른 인터페이스를 구현하기 위해 tKinter 또는 다른 GUI (예 : wxPython 또는 pyQT)를 사용하는 것이 어렵지 않습니다.

    keypress를 감지하기 위해 리스너 또는 다른 인터페이스를 구현하기 위해 tKinter 또는 다른 GUI (예 : wxPython 또는 pyQT)를 사용하는 것이 어렵지 않습니다.

    이 스레드를 확인하십시오.

  7. from https://stackoverflow.com/questions/24072790/detect-key-press-in-python by cc-by-sa and MIT license