首页 > 代码库 > PyQt Phonon实现音乐播放器
PyQt Phonon实现音乐播放器
现在网上关于PyQt的文章不多,话说那个官方文档也是烂的一塌糊涂,初次使用Phonon模块遇到很多疑问,
国外网站相关的资料多些,看到一些好的例子记录下来,主要是注释了一下,给后来者一些提示。
# -*- coding: utf-8 -*- import sys from PyQt4 import QtCore, QtGui from PyQt4.phonon import Phonon class AudioPlayer(QtGui.QWidget): def __init__(self, url, parent = None): #url参数就是你的MP3地址 self.url = url QtGui.QWidget.__init__(self, parent) #设置一些窗口尺寸的策略,不用设置也会有默认策略,干脆注释了,无影响 # self.setSizePolicy(QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Preferred) #创建一个音乐播放器 这是一种简单的方法,功能自然也是很单一,貌似只能实现简单的单首歌曲播放(希望我没有猜错,),更灵活的是使用AudioOutput,MediaObject等方法实现 self.player = Phonon.createPlayer(Phonon.MusicCategory,Phonon.MediaSource(url)) #下面这句话真没搞懂,谷歌了一下 多次尝试没反应 干脆把他注释了。。不影响程序 # self.player.setTickInterval(100) self.player.tick.connect(self.tock) #播放进度改变触发事件 self.play_pause = QtGui.QPushButton(self) #播放按钮 self.play_pause.setIcon(QtGui.QIcon('icons/49heart.svg')) #设置播放按钮图标,jpg,png都可以 self.play_pause.clicked.connect(self.playClicked) #播放按钮单击事件 self.player.stateChanged.connect(self.stateChanged) #播放状态改变触发事件 self.slider = Phonon.SeekSlider(self.player , self) #进度条 self.status = QtGui.QLabel(self) #Label组件用来显示播放的当前时间 self.status.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) #设置Label的对齐方式 左对齐或居中 layout = QtGui.QHBoxLayout(self) #水平布局 layout.addWidget(self.play_pause) #添加播放按钮 layout.addWidget(self.slider) #添加滑动条 layout.addWidget(self.status) #添加播放状态 def playClicked(self): if self.player.state() == Phonon.PlayingState: #如果为播放状态 self.player.pause() #暂停 else: self.player.play() #开始播放 def stateChanged(self, new, old): if new == Phonon.PlayingState: #根据改变后的状态更换播放图标 self.play_pause.setIcon(QtGui.QIcon('icons/49heart.svg')) else: self.play_pause.setIcon(QtGui.QIcon('icons/49heart.svg')) def tock(self, time): #播放进度改变时用来更新上面Label组件里面的当前播放时间time参数就是歌曲当前所在的时间刻,流中的媒体对象的当前位置是由时间参数给出 以毫秒为单位 time = time/1000 #除以1000得到秒单位 h = time/3600 #小时 m = (time-3600*h) / 60 #分钟 s = (time-3600*h-m*60) #秒 self.status.setText('%02d:%02d:%02d'%(h,m,s)) #更新Label显示的播放时间进度 def main(): app = QtGui.QApplication(sys.argv) window=AudioPlayer(sys.argv[1]) #在命令行下的第二个参数 你的歌曲路径 window.show() #显示主窗口 sys.exit(app.exec_()) if __name__ == "__main__": main() # 测试: python mp3player.py mymusic.mp3
这段代码实现了单首个点播,嵌入到程序中实现简单声音播放还是不错的,如果要做的更专业,更贴近现代化播放器该有的功能,
接下来几篇文章中我会介绍一些更灵活的复杂的功能
PyQt Phonon实现音乐播放器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。