Воспроизведение звука при нажатии клавиши в Python
Я пишу сценарий Python, в котором каждый раз при нажатии клавиши воспроизводится звук. Я использую модуль Winsound для воспроизведения звука, и мне нужно что-то вроде этого:
import winsound
while True:
if any_key_is_being_pressed: # Replace this with an actual if statement.
winsound.PlaySound("sound.wav", winsound.SND_ASYNC)
# rest of the script goes here...
Однако я не хочу, чтобы блок "While True" приостанавливал скрипт при его запуске. Я хочу, чтобы он работал в фоновом режиме и позволял скрипту выполняться, если это возможно даже в Python.
Возможно, я лаю не на то дерево, и мне не нужно время, правда; если есть способ воспроизводить звук при нажатии любой клавиши клавиатуры, то скажите, пожалуйста.
Спасибо.
2 ответа
Используйте модуль pynput.keyboard,
from pynput.keyboard import Key, Listener
import winsound
def on_press(key):
winsound.PlaySound("sound.wav", winsound.SND_ASYNC)
def on_release(key):
print('{0} release'.format(
key))
if key == Key.esc:
# Stop listener
return False
# Collect events until released
with Listener(
on_press=on_press,
on_release=on_release) as listener:
listener.join()
Если вы хотите, чтобы ваш код выполнялся при любом нажатии клавиши, следующий код будет работать отлично
import msvcrt, winsound
while True:
if msvcrt.kbhit(): #Checks if any key is pressed
winsound.PlaySound("sound.wav", winsound.SND_ASYNC)
Если вы хотите выполнить свой код при определенном нажатии клавиши, этот код будет работать хорошо.
import keyboard
""" using module keyboard please install before using this module
pip install keyboard
"""
while True:
try: # used try so that if user pressed other than the given key error will not be shown
if keyboard.is_pressed('a'): # if key 'a' is pressed
winsound.PlaySound("sound.wav", winsound.SND_ASYNC)
break # finishing the loop
except:
break