gpt4 book ai didi

python - 尝试创建带有锁定的简单按钮推送播放

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:55 24 4
gpt4 key购买 nike

这里是新手。尝试编写简单的代码来播放加载的音频文件并“锁定”进一步的按钮按下,直到文件完成支付。我正在使用 GPIO 输入。我正在 Raspberry Pi 3b+ 上使用 Thonny 中的 python 进行编写。使用我当前的文件,我可以加载该文件,并初始化音频和 GPIO 按钮,但我不知道如何锁定另一个按钮按下的输入。按下其他按钮会触发音频在已播放的文件上再次播放。

我尝试过 pygame 事件等待和 sleep 功能,但我找不到有关如何使用它们的明确信息。

import pygame

pygame.init()

from gpiozero import Button, LED


btn_playaudio = Button(27)

playaudio = pygame.mixer.Sound('/home/pi/folder/folder2/audiofile.wav')

btn_playaudio.when_pressed = playaudio.play

我希望文件播放一次直到完成,然后在按下按钮时准备再次播放。

最终,该程序将被加载到 headless Pi 并使用 rc.local 自动运行,以便当设备打开时,它会启动、加载程序并准备好按下按钮。(基本上是一个按钮信息亭,按下按钮时会播放音频 - 它会 24/7 运行)

最佳答案

你可以这样做:

import pygame
import time
from gpiozero import Button


pygame.init()
btn_playaudio = Button(27)
playaudio = pygame.mixer.Sound('/home/pi/folder/folder2/audiofile.wav')


def my_player():
global btn_playaudio # We want changes to this to occur in the global scope
length = playaudio.get_length() # Returns the length of the sound, in seconds
btn_playaudio.when_pressed = None # Remove the handler while the sound is playing
playaudio.play()
time.sleep(length)
btn_playaudio.when_pressed = my_player # Restore the handler


btn_playaudio.when_pressed = my_player

策略是在声音播放时删除处理程序,然后在播放完成后将其添加回来。我还没有实际测试过它,因此您可能需要调试它。

关于python - 尝试创建带有锁定的简单按钮推送播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57696376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com