Python QSoundEffect()不';当它';这超出了全球范围
我正在制作一个应用程序,将文件从一个目录复制到另一个目录。我希望它在过程结束时发出声音。当QSoundEffect在某个函数或类中时,我不知道如何使它产生声音。只有当代码如下所示时,它才会起作用:Python QSoundEffect()不';当它';这超出了全球范围,python,pyqt5,Python,Pyqt5,我正在制作一个应用程序,将文件从一个目录复制到另一个目录。我希望它在过程结束时发出声音。当QSoundEffect在某个函数或类中时,我不知道如何使它产生声音。只有当代码如下所示时,它才会起作用: import sys from PyQt5.QtCore import * from PyQt5.QtWidgets import * from PyQt5.QtMultimedia import * app = QApplication(sys.argv) win = QMainWindow()
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtMultimedia import *
app = QApplication(sys.argv)
win = QMainWindow()
filepath = "C:\Windows\Media\Windows Error.wav"
sound = QSoundEffect()
sound.setSource(QUrl.fromLocalFile(filepath))
sound.play()
win.show()
sys.exit(app.exec_())
当代码看起来像这样时,为什么它不工作?如何使它在函数或类中工作
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtMultimedia import *
def play_sound():
filepath = "C:\Windows\Media\Windows Error.wav"
sound = QSoundEffect()
sound.setSource(QUrl.fromLocalFile(filepath))
sound.play()
app = QApplication(sys.argv)
win = QMainWindow()
play_sound()
win.show()
sys.exit(app.exec_())
问题是“声音”是play_sound函数的局部变量,因此当该方法完成几乎是瞬时的执行时,它将被消除
解决方案是延长生命周期:
- Python风格:使用全局变量
sound=None def播放声音(): filepath=“C:\Windows\Media\Windows Error.wav” 全球声音 声音=QSoundEffect() sound.setSource(QUrl.fromLocalFile(filepath)) 播放
- Qt样式:设置父项
def play_sound(): filepath=“C:\Windows\Media\Windows Error.wav” sound=QSoundEffect(QCoreApplication.instance()) sound.setSource(QUrl.fromLocalFile(filepath)) 播放