在Python中,每当按下该键时播放声音

在Python中,每当按下该键时播放声音,python,python-3.x,winsound,Python,Python 3.x,Winsound,我正在编写一个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

我正在编写一个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中是可能的话

也许我找错了方向,不需要一段时间的真实;如果有任何方法可以在按下键盘键时播放声音,请告诉我


谢谢。

使用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()

使用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()

如果您希望您的代码在任何按键上执行,那么下面的代码将完美地工作

导入msvcrt,winsound
尽管如此:
if msvcrt.kbhit():#检查是否按下了任何键
播放声音(“sound.wav”,winsound.SND_ASYNC)
如果你想在某个按键上执行你的代码,那么这个代码会很好的工作

导入键盘
“”“使用模块键盘请在使用此模块之前安装
安装键盘
"""
尽管如此:
try:#使用try,以便在用户按下给定键以外的其他键时不会显示错误
如果按了键盘.u('a'):#如果按了键'a'
播放声音(“sound.wav”,winsound.SND_ASYNC)
结束循环
除:
打破

如果您希望在任何按键上执行代码,则以下代码将完美工作

导入msvcrt,winsound
尽管如此:
if msvcrt.kbhit():#检查是否按下了任何键
播放声音(“sound.wav”,winsound.SND_ASYNC)
如果你想在某个按键上执行你的代码,那么这个代码会很好的工作

导入键盘
“”“使用模块键盘请在使用此模块之前安装
安装键盘
"""
尽管如此:
try:#使用try,以便在用户按下给定键以外的其他键时不会显示错误
如果按了键盘.u('a'):#如果按了键'a'
播放声音(“sound.wav”,winsound.SND_ASYNC)
结束循环
除:
打破

看一看。我想它可能对你有用。看一看。我认为它可能对你有用。非常感谢,它工作得非常完美,但它会暂停脚本,因此它不会运行任何后续操作。有没有一种方法可以让听者继续运行但不暂停脚本?非常感谢,它工作得很好,但它会暂停脚本,因此不会在脚本之后运行任何内容。有没有一种方法可以让侦听器保持运行,但不暂停脚本?