首先,我是Python的初学者。。。 我试图设置一个程序,每当按下键盘上的一个键时,它就会播放正弦波。我已经了解了如何在python中播放声音,现在我正在尝试让python监听按键和释放。我用键盘模块和pysinewave模块来实现这一点
我有两个独立的线程等待键盘回拨某个键被按下或释放,然后它播放或停止声音并清除事件。似乎pressSineWave()运行while循环,即使它尚未设置,但随后无法正确清除它。它播放声音的速度太快,以至于python崩溃。你们认为问题出在哪里
import time
import keyboard
import threading
from pysinewave import SineWave
A = SineWave(pitch = 9, decibels = -40)
pressKeyEvent = threading.Event()
releaseKeyEvent = threading.Event()
def playSineWave():
pressKeyEvent.wait()
while pressKeyEvent.is_set:
A.play()
pressKeyEvent.clear()
def stopSineWave():
releaseKeyEvent.wait()
while releaseKeyEvent.is_set:
A.stop()
releaseKeyEvent.clear()
playThread = threading.Thread(target=playSineWave)
stopThread = threading.Thread(target=stopSineWave)
playThread.start()
stopThread.start()
keyboard.on_press(pressKeyEvent.set())
keyboard.on_release(releaseKeyEvent.set())
看起来你已经把一项简单的任务复杂化了。现在,如果没有我在最后放的sleep语句,这个程序就会过载,代码中包含的线程只会使Python过载更多。下面的代码应该可以执行所需的操作,如果您愿意,您可以更改密钥
相关问题 更多 >
编程相关推荐