PyQt Phonon實現音樂播放器

來源:互聯網
上載者:User

標籤:pyqt phonon   pyqt音樂播放   

現在網上關於PyQt的文章不多,話說那個官方文檔也是爛的一塌糊塗,初次使用Phonon模組遇到很多疑問,

國外網站相關的資料多些,看到一些好的例子記錄下來,主要是注釋了一下,給後來者一些提示。

# -*- coding: utf-8 -*-import sysfrom PyQt4 import QtCore, QtGuifrom PyQt4.phonon import Phononclass 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))        #下面這句話真沒搞懂,Google了一下  多次嘗試沒反應  乾脆把他注釋了。。不影響程式        # 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個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.