当我按下键盘键时,Windows 可以播放声音吗?

Posted

技术标签:

【中文标题】当我按下键盘键时,Windows 可以播放声音吗?【英文标题】:Can windows play sound when I press a keyboard key? 【发布时间】:2019-10-07 13:12:51 【问题描述】:

我发现an application 允许你这样做,我想知道这是否可以通过任何内置程序来完成(我不是指 Caps Lock、Num Lock 单选按钮,它们的声音可以打开在控制面板中)?这可以使用下面的代码在 python 上完成,但我的winsound.PlaySound 不想找到该文件,只是播放错误的系统声音。这个answer 没有帮助(通过 sys 或创建文件夹)。

代码:

import winsound
import keyboard
duration = 250
q = 300
while True:
    try:
        if keyboard.is_pressed('q'):
            winsound.PlaySound('C:\\some.wav',winsound.SND_FILENAME)            
            winsound.Beep(q, duration)#Since PlaySound does not want to search, you have to do it through squeak
    except:
        break

【问题讨论】:

“不想找到文件”是什么意思?您总是需要告诉程序在哪里找到文件,没有“找到”...... @h4z3,是的,但是即使我指定了路径,那么 mp3 或 wav 文件(尝试不同)仍然无法播放 【参考方案1】:

几个月前我在 VB.net 中发现了类似的东西 因此,我建议您不要使用winsound,而是使用simpleaudio 包。

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file(filename)
play_obj = wave_obj.play()
play_obj.wait_done()  # Wait until sound has finished playing

from pynput.keyboard import Listener
import simpleaudio as sa


filename = 'music.wav'
wave_obj = sa.WaveObject.from_wave_file(filename)


def on_press(key):
    if key.char == 'q':
        play_obj = wave_obj.play()
        play_obj.wait_done()


with Listener(on_press=on_press) as listener:
    listener.join()

【讨论】:

也许我做错了什么?我按照你说的做了一切,但是按q后,声音不播放,程序结束。 while True: try: if keyboard.is_pressed('q'): filename = 'some.wav' wave_obj = sa.WaveObject.from_wave_file(filename) play_obj = wave_obj.play() play_obj.wait_done() elif keyboard.is_pressed('w'): winsound.Beep(w, duration) else: pass except: break 添加了一个带有关键监听器的实现

以上是关于当我按下键盘键时,Windows 可以播放声音吗?的主要内容,如果未能解决你的问题,请参考以下文章

当我按下快速播放按钮时,声音播放失败

当我按下几个 Jbutton 时,无法播放多个声音

我需要能够暂停整个游戏,但是当我按下键盘上的 p 键时,只有我的汽车精灵暂停

当我按下一个键时没有调用 keyPressed() 方法?

键绑定中的修饰符(SHIFT +(随机键))

按下按钮时播放随机声音[重复]