之前一直在windows上测试Phonon代码,刚刚回来用linux居然提示我没有Phonon模块

我使用的发行版是自带pyqt4的,但是不带Phonon模块,其实也说的通,Phonon本身也不是Qt的项目,详细请百度  sorry 是谷歌

我用的ubuntu系列,安装Phonon模块方法如下:

sudo apt-get install python-qt4-phonon

其他版本请使用yum install ****  或下载源代码自行编译安装

下面这个简单的例子,道出了Phonon基本使用之道,例子非常清晰易懂

#coding=utf-8
from PyQt4 import QtGui, QtCore
from 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 sysapp = QtGui.QApplication(sys.argv)app.setApplicationName('Phonon')win = Window()win.resize(200, 100)win.show()sys.exit(app.exec_())

请对比我上一篇的例子,细细品味一下两者使用完全不同的两个类,而这种方式才是核心,上一篇的例子算是抛簪引玉,

这篇例子说明了phonon的基本使用之道,更深刻的例子在接下来的文章中咱们继续分析

PyQt Phonon 模块初探相关推荐

  1. Nginx stream模块初探

    Nginx stream模块初探 前言 nginx从1.9.0开始,新增加了一个stream模块,用来实现四层协议的转发.代理或者负载均衡等.这完全就是抢HAproxy份额的节奏,鉴于nginx在7层 ...

  2. Python 日志logging模块初探及多线程踩坑(2)

    系列文章: Python 日志logging模块初探及多线程踩坑(1) Python 日志logging模块初探及多线程踩坑(2) 接着上面一篇文章,我们这篇来写一个多进程兼容且无损性能的 Timed ...

  3. 基于Qt Phonon模块实现音乐播放器

    这次使用Qt实现的是一个本地音乐播放器,可以播放下载在计算机本地的音乐,提供了添加歌曲,歌曲列表,清空列表的功能.默认歌曲列表循环播放.音乐播放的实现主要依赖的是Qt 的多媒体框架phonon.该音乐 ...

  4. Pyqt phonon的使用

    本文是用Pyqt实现了下网上一个Qt版大牛关于phonon的介绍 Qt phonon地址:http://wenku.baidu.com/link?url=nH_dZ8lZbXHy8N5__8jAWLX ...

  5. Nginx限速模块初探

    Nginx限速模块分为哪几种?按请求速率限速的burst和nodelay参数是什么意思?漏桶算法和令牌桶算法究竟有什么不同?本文将带你一探究竟.我们会通过一些简单的示例展示Nginx限速模块是如何工作 ...

  6. Qt Quick 3D模块初探

    0.前言 Qt Quick 3D提供了用于基于Qt Quick创建3D内容或UI的高级API.提供了对现有Qt Quick场景图(scenegraph )的扩展,以及对该扩展场景图的渲染器.使用空间场 ...

  7. Node.js教程15:net模块初探

    系列文章请访问我的GitHub博客,示例代码请访问这里. net模块 net 模块用于创建基于流的 TCP 或 IPC 的服务器(net.createServer())与客户端(net.createC ...

  8. PyQt - 维基百科,自由的百科全书

    PyQt - 维基百科,自由的百科全书 PyQt 维基百科,自由的百科全书 跳转至: 导航. 搜索 PyQt 開發者 Riverbank Computing 穩定版本 4.9.5/ 2012年9月29 ...

  9. python制作视频播放器_Python应用03 使用PyQT制作视频播放器

    最近研究了Python的两个GUI包,Tkinter和PyQT.这两个GUI包的底层分别是Tcl/Tk和QT.相比之下,我觉得PyQT使用起来更加方便,功能也相对丰富.这一篇用PyQT实现一个视频播放 ...

最新文章

  1. ansible命令参数介绍
  2. php 白名单,php实现ip白名单黑名单功能
  3. 普通二本,去了小公司,我也想改变
  4. Jvisualvm简单使用教程
  5. 检索 COM 类工厂中 CLSID 为 {xxx} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码。...
  6. 好玩的软件 Aura 模拟自然界中的音效,让你置身大自然。
  7. php小说阅读例子,Thinkphp掌上阅读功能完善强大的小说源码 - 四套模板
  8. 4个方法,教你1分钟查询你的手机注册了多少软件和网站
  9. python爬取百度图片的思路与代码(最后附上了代码)
  10. 【转载】秦九韶算法 Horner算法
  11. 嵌入式编程中的堆栈溢出检测
  12. 启发式算法(通俗解释)
  13. 2019最新Java实战开发今日头条资讯网站
  14. 关于程序设计中的框架结构
  15. Web综合应用案例-限时秒杀效果的制作
  16. Data Masking-克隆“真实”的假数据
  17. 考技术中称计算机一类二类,成都工贸职业技术学院2020年单招职业技能测试考试大纲(面向中职-信息技术类)...
  18. vb.net 文本转语音
  19. vb html 乱码,vb输出html乱码怎么办
  20. html css动画自动旋转,html – 使这个CSS3动画旋转只旋转一次

热门文章

  1. log 和 reflog的区别
  2. 石榴社区slsp7com_番石榴是重量级的图书馆,我想改变一下
  3. Scratch教程——按键的技巧
  4. 知识分享 | 精益的力量之:目视化管理的作用
  5. 全国土壤,地质数据以及降雨数据的下载
  6. 需求管理工具DOORS介绍
  7. 一个MM的工资条(zt)
  8. SQL基本使用(通俗易懂,适合适合0基础的小伙伴们)
  9. Mysql使用sql语句建表
  10. cron 表达式 1小时30分钟,100分钟执行一次