обнаружить нажатие клавиши в python?

Я делаю программу типа секундомера в python, и я хотел бы знать, как определить, нажата ли клавиша (например, p для паузы и s для остановки), и мне не хотелось бы, чтобы это было что-то вроде raw_input, ожидающего пользователя перед продолжением выполнения. Кто-нибудь знает, как это сделать в цикле while?

Кроме того, я хотел бы сделать эту кросс-платформу, но если это невозможно, то моей основной целью разработки является linux

Python имеет клавиатурный модуль с множеством функций. Установите его, возможно, с помощью этой команды:

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 

Поскольку OP упоминает о raw_input, это означает, что он хочет решение cli. Linux: проклятия – это то, что вы хотите (windows PDCurses). Curses, является графическим API для программного обеспечения cli, вы можете добиться большего, чем просто обнаружить ключевые события.

Этот код будет обнаруживать ключи до тех пор, пока не будет нажата новая строка.

 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) 

Для Windows вы можете использовать msvcrt следующим образом:

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

Используйте 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() 

Я предлагаю вам использовать PyGame и добавить дескриптор события.

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

Было бы не так сложно использовать tKinter или какой-либо другой графический интерфейс (например, wxPython или pyQT) для реализации прослушивателя или другого интерфейса для обнаружения нажатия клавиши.

Проверьте эту тему .

  • как встроить автономные графики bokeh в шаблоны django
  • Как использовать pip с Python 3.x вместе с Python 2.x
  • Использование моего собственного корпуса вместо movie_reviews corpus для classификации в NLTK
  • Python-OpenCV cv2 Ошибка OpenCV: утверждение не выполнено (scn == 3 || scn == 4) в неизвестной функции, файл .. \ .. \ .. \ modules \ imgproc \ src \ color.cpp
  • Python 2.7: streamовый HTTP-сервер, поддерживающий несколько соединений на одном порту
  • Что означает эллипсис в списке?
  • python игнорировать проверку сертификата urllib2
  • Аргументы по умолчанию: * args и ** kwargs
  • ImportError при импорте некоторых модhive из SciPY
  • Доступ к атрибутам на литералах работает на всех типах, но не `int`; Зачем?
  • Как передать дополнительные аргументы в декоратор Python?
  • Interesting Posts

    Как отключить кнопку «Очистить данные» в «Информация о приложении» для «Управление приложением»

    Каков наилучший способ архивирования моей библиотеки DVD?

    Двухстраничный просмотр в полноэкранном режиме для Adobe Acrobat

    Не удалось найти ресурсы, подходящие для указанной культуры или нейтральной культуры

    SSH: сбой с закрытым ключом, работает с копией ключа, расположенного в другом месте

    JCE не может аутентифицировать поставщика BC в приложении java swing

    Какова максимальная температура, которую могут достичь мои процессоры до причинения ущерба?

    Самый простой способ получить верхние n элементов Scala Iterable

    Не найден ресурс, который соответствует указанному имени (в диалогеCornerRadius со значением «? Android: attr / dialogCornerRadius»)

    Как я могу заставить Windows 7 переключать звук с монитора (со встроенными динамиками) на наушники, когда они подключены?

    Как я могу сбросить разрешения Windows 7?

    Как смешивать цвета «естественно» с C #?

    Исходный код исходного кода Java

    Count BW / цветные страницы в формате PDF

    Функция Excel VBA работает в Visual Basic, но не работает в рабочем листе

    Давайте будем гением компьютера.