使用Pyqt4和QSound播放声音

使用Pyqt4和QSound播放声音,第1张

使用Pyqt4和QSound播放声音

您在这里可能有两个不同的问题。


首先,如果要使用Windows样式的路径名,则需要使用原始字符串或反斜杠转义符。在常规字符串中,

b
是单个退格字符,而不是
后跟一个
b
。换句话说,当您确实要播放文件’C:
directory
x081.mp3’时,您正在尝试播放它
C:\directory\b1.mp3
。有关详细信息,请参见文档中的字符串和字节文字。

您可以尝试记住所有特殊的反斜杠转义字符,但更简单的解决方案是始终转义所有反斜杠。或者,甚至更简单地,将原始字符串用于所有Windows样式的路径名。或者,更简单的是,如果您使用的函数甚至在Windows上也允许POSIX样式的路径名,则只需使用它们即可。换句话说,以下之一:

"C:directory\b1.mp3""C:\directory\b1.mp3"r"C:directoryb1.mp3""C:/directory/b1.mp3"

最重要的是,如果您使用的是较旧版本的PyQt,则不能以这种方式调用静态Qt方法。换句话说,您不是在调用

QSound::play(filename)
static方法,而是在
QSound::play()
实例(插槽)方法。在以后的版本中,这应该没问题-
尽管如文档所述,构造a
QSound
并调用其
play
方法“可能……立即播放更多”,所以您可能还是想这样做。

如果您有此问题,解决方法是:

QSound(r"C:directoryb1.mp3").play()

尽管在实际代码中,您可能希望保留大多数

QSound
对象,而不是每次都重新创建它们。


在评论中,您说:

我发现QSound实际上不支持资源。不幸的是,我不知道这意味着什么,也许您可​​以解释这对我的代码意味着什么。

这对您的代码没有任何意义,至少在今天没有。您已将声音保存在常规文件中,并尝试通过绝对路径名访问这些文件。

但是,如果您想在将来改进应用程序,可能会遇到麻烦。

资源在Qt资源系统中进行了说明。这样做的想法是,您只需要一个可执行文件(例如),而不是为图像等提供一堆单独的文件

MyApp.exe
,而所有资源文件都将塞入该可执行文件中。在运行时,您仍然可以访问这些资源,就像它们仍然是单独的文件一样。您只需使用特殊路径
:/sounds/b1.mp3
(例如,更好的是,从路径名切换为URL,并使用特殊网址,例如
qrc:///sounds/b1.mp3
)。

关键是那个“差不多”。某些功能无法直接在资源上使用,因此,如果要使用这些功能,则必须将资源显式提取到临时文件中。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5648467.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存