如何用PyScript播放MP3文件?代码报错求解决方案
问题原因与解决方案
你遇到的AttributeError: play错误,核心原因是错误获取了<source>标签元素,而play()、pause()这些播放控制方法属于<audio>元素,并非<source>元素。
修正步骤与代码示例
1. 修改HTML结构,给<audio>标签添加ID
给外层的<audio>元素设置唯一ID,用于PyScript定位:
<audio controls id="audio-player"> <source src="sounds//ziege.mp3" type="audio/mpeg"> </audio> <button py-click="play">Play</button> <button py-click="pause">Pause</button> <button py-click="stop">Stop</button>
2. 调整PyScript代码,正确操作<audio>元素
无需额外引入pyweb或to_js转换,PyScript的document对象可直接操作DOM元素,同时注意原生audio元素没有stop()方法,需通过重置播放位置模拟停止:
from pyscript import document # 获取正确的audio元素 audio_player = document.querySelector("#audio-player") def play(event): audio_player.play() def pause(event): audio_player.pause() def stop(event): audio_player.pause() audio_player.currentTime = 0 # 重置到播放起始位置
关键说明
<source>仅用于定义音频资源路径,所有播放控制逻辑都需要作用于父级的<audio>元素。- PyScript与浏览器DOM的交互无需额外转换,通过
document.querySelector或document.getElementById获取的元素可直接调用原生JS方法。 - 原生HTMLAudioElement没有内置
stop()方法,通过pause()+currentTime=0的组合可以实现停止并重置的效果。
内容的提问来源于stack exchange,提问作者Peter M.
相关产品推荐
相关产品推荐

