PyQt Phonon 模組初探

來源:互聯網
上載者:User

標籤:phonon音樂播放器   pyqt phonon案例   phonon分析   

之前一直在windows上測試Phonon代碼,剛剛回來用linux居然提示我沒有Phonon模組

我使用的發行版是內建pyqt4的,但是不帶Phonon模組,其實也說的通,Phonon本身也不是Qt的項目,詳細請百度  sorry 是Google

我用的ubuntu系列,安裝Phonon模組方法如下:

sudo apt-get install python-qt4-phonon

其他版本請使用yum install ****  或下載原始碼自行編譯安裝

下面這個簡單的例子,道出了Phonon基本使用之道,例子非常清晰易懂

#coding=utf-8from PyQt4 import QtGui, QtCorefrom PyQt4.phonon import Phononclass Window(QtGui.QPushButton):    def __init__(self):        QtGui.QPushButton.__init__(self, 'Choose File')   #將一個按鈕作為主視窗,誰說不可以。你試試        self.mediaObject = Phonon.MediaObject(self)   #執行個體化一個媒體對象        self.audioOutput = Phonon.AudioOutput(Phonon.MusicCategory, self)   #執行個體化音訊輸出        Phonon.createPath(self.mediaObject, self.audioOutput)   #將上面的媒體對象作為音頻來源並對接到音訊輸出        self.mediaObject.stateChanged.connect(self.handleStateChanged)  #播放狀態改變觸發事件        self.clicked.connect(self.handleButton) #單擊按鈕事件    def handleButton(self):   #按下按鈕後檢測當前的播放狀態,如果為播放狀態,那麼停止        if self.mediaObject.state() == Phonon.PlayingState:            self.mediaObject.stop()        else:   #如果狀態本身就是停止的那麼就開啟檔案對話方塊選擇媒體            path = QtGui.QFileDialog.getOpenFileName(self, self.text())  #第二個參數是設定開啟檔案對話方塊預設在當前工作目錄            if path:                self.mediaObject.setCurrentSource(Phonon.MediaSource(path))  #把這個檔案放到當前的播放隊列的第一個位置(這個位置不是我們看到的列表裡面的位置,而是播放位置)                self.mediaObject.play()  #開始播放    def handleStateChanged(self, newstate, oldstate):   #當播放狀態該表時觸發這個函數        if newstate == Phonon.PlayingState:  #檢查播放狀態            self.setText('Stop')        elif newstate == Phonon.StoppedState:            self.setText('Choose File')        elif newstate == Phonon.ErrorState:  #判斷播放異常,這個很實用            source = self.mediaObject.currentSource().fileName()   #拋出播放出錯的檔案名稱            print 'ERROR: could not play:', source.toLocal8Bit().data()if __name__ == '__main__':    import sys    app = QtGui.QApplication(sys.argv)    app.setApplicationName('Phonon')    win = Window()    win.resize(200, 100)    win.show()    sys.exit(app.exec_())
請對比我上一篇的例子,細細品味一下兩者使用完全不同的兩個類,而這種方式才是核心,上一篇的例子算是拋簪引玉,

這篇例子說明了phonon的基本使用之道,更深刻的例子在接下來的文章中咱們繼續分析


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.