我正在尝试在游戏中添加声音,尽管在简单的程序代码中它可以工作,但是每当我尝试将此代码放在某个类中时,它就会停止工作。
class myLabel(QLabel):
def __init__(self, field):
super().__init__(field)
def mouseDoubleClickEvent(self, event: QtGui.QMouseEvent):
if event.button() & QtCore.Qt.LeftButton:
path = '/home/me/Desktop/sound.mp3'
mediaContent = QMediaContent(QUrl.fromLocalFile(path))
player = QMediaPlayer()
player.setMedia(mediaContent)
player.play()
if __name__ == '__main__':
app = QApplication(sys.argv)
# this works
path = '/home/me/Desktop/sound.mp3'
mediaContent = QMediaContent(QUrl.fromLocalFile(path))
player = QMediaPlayer()
player.setMedia(mediaContent)
player.play()
# and this doesn't
widget = myLabel('nope')
widget.show()
sys.exit(app.exec_())
我就是不明白为什么。有时候我可以在调试时得到声音。
upd:只是以为那个问题可能是我没有使用线程,但是以下代码却无法正常工作。也许问题可能出在系统上?尽管我在调试控制台中没有收到任何错误。
class PlayThread(QtCore.QThread):
def __init__(self):
super().__init__()
def play(self):
path = '/home/me/Desktop/sound.mp3'
mediaContent = QMediaContent(QUrl.fromLocalFile(path))
player = QMediaPlayer()
player.setMedia(mediaContent)
player.play()
class myLabel(QLabel):
def __init__(self, field):
super().__init__(field)
def mouseDoubleClickEvent(self, event: QtGui.QMouseEvent):
if event.button() & QtCore.Qt.LeftButton:
player = PlayThread()
player.play()