【发布时间】:2021-08-19 21:27:30
【问题描述】:
首先,我是 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())
【问题讨论】:
标签: python events event-handling keyboard-events