You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyQt6使用Qt资源播放音频报错0x8007007B,求解决方法

Qt资源系统播放音频报错0x8007007B的解决方法

问题场景

使用PyQt6编写的音频播放代码,本地文件路径(如sounds/clic.mp3)可正常运行,但改用Qt资源路径(如:/sounds/sounds/clic.mp3)后,出现错误:handleSourceError: 0x8007007B。

原代码:

from PyQt6.QtCore import QUrl
from PyQt6.QtMultimedia import QMediaPlayer,QAudioOutput
import ressources_rc

def play(self, son ="sounds/clic.mp3"):
    self.player = QMediaPlayer()
    self.audio = QAudioOutput()
    self.player.setAudioOutput(self.audio)
    self.player.setSource(QUrl.fromLocalFile(son))
    self.player.play()

问题原因

QUrl.fromLocalFile()仅能解析本地文件系统的路径,而Qt资源系统的路径属于资源URL,并非本地文件路径。用该方法解析资源路径会导致格式识别错误,触发0x8007007B(无效路径格式)的报错。

修复方案

直接使用QUrl()构造函数传入资源路径,无需调用fromLocalFile():

修改后的代码:

from PyQt6.QtCore import QUrl
from PyQt6.QtMultimedia import QMediaPlayer,QAudioOutput
import ressources_rc

def play(self, son =":/sounds/clic.mp3"):  # 路径需与qrc文件定义一致
    self.player = QMediaPlayer()
    self.audio = QAudioOutput()
    self.player.setAudioOutput(self.audio)
    self.player.setSource(QUrl(son))  # 直接构造资源URL
    self.player.play()

额外注意事项:

  • 核对资源路径正确性:若.qrc文件中定义为<file>sounds/clic.mp3</file>,则资源路径应为:/sounds/clic.mp3,避免重复嵌套sounds目录
  • 确保ressources_rc.py已通过pyrcc6工具正确编译生成

内容的提问来源于stack exchange,提问作者Christophe Tdn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 21:35:59