PyQt Phonon 模块初探
之前一直在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 模块初探相关推荐
- Nginx stream模块初探
Nginx stream模块初探 前言 nginx从1.9.0开始,新增加了一个stream模块,用来实现四层协议的转发.代理或者负载均衡等.这完全就是抢HAproxy份额的节奏,鉴于nginx在7层 ...
- Python 日志logging模块初探及多线程踩坑(2)
系列文章: Python 日志logging模块初探及多线程踩坑(1) Python 日志logging模块初探及多线程踩坑(2) 接着上面一篇文章,我们这篇来写一个多进程兼容且无损性能的 Timed ...
- 基于Qt Phonon模块实现音乐播放器
这次使用Qt实现的是一个本地音乐播放器,可以播放下载在计算机本地的音乐,提供了添加歌曲,歌曲列表,清空列表的功能.默认歌曲列表循环播放.音乐播放的实现主要依赖的是Qt 的多媒体框架phonon.该音乐 ...
- Pyqt phonon的使用
本文是用Pyqt实现了下网上一个Qt版大牛关于phonon的介绍 Qt phonon地址:http://wenku.baidu.com/link?url=nH_dZ8lZbXHy8N5__8jAWLX ...
- Nginx限速模块初探
Nginx限速模块分为哪几种?按请求速率限速的burst和nodelay参数是什么意思?漏桶算法和令牌桶算法究竟有什么不同?本文将带你一探究竟.我们会通过一些简单的示例展示Nginx限速模块是如何工作 ...
- Qt Quick 3D模块初探
0.前言 Qt Quick 3D提供了用于基于Qt Quick创建3D内容或UI的高级API.提供了对现有Qt Quick场景图(scenegraph )的扩展,以及对该扩展场景图的渲染器.使用空间场 ...
- Node.js教程15:net模块初探
系列文章请访问我的GitHub博客,示例代码请访问这里. net模块 net 模块用于创建基于流的 TCP 或 IPC 的服务器(net.createServer())与客户端(net.createC ...
- PyQt - 维基百科,自由的百科全书
PyQt - 维基百科,自由的百科全书 PyQt 维基百科,自由的百科全书 跳转至: 导航. 搜索 PyQt 開發者 Riverbank Computing 穩定版本 4.9.5/ 2012年9月29 ...
- python制作视频播放器_Python应用03 使用PyQT制作视频播放器
最近研究了Python的两个GUI包,Tkinter和PyQT.这两个GUI包的底层分别是Tcl/Tk和QT.相比之下,我觉得PyQT使用起来更加方便,功能也相对丰富.这一篇用PyQT实现一个视频播放 ...
最新文章
- ansible命令参数介绍
- php 白名单,php实现ip白名单黑名单功能
- 普通二本,去了小公司,我也想改变
- Jvisualvm简单使用教程
- 检索 COM 类工厂中 CLSID 为 {xxx} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码。...
- 好玩的软件 Aura 模拟自然界中的音效,让你置身大自然。
- php小说阅读例子,Thinkphp掌上阅读功能完善强大的小说源码 - 四套模板
- 4个方法,教你1分钟查询你的手机注册了多少软件和网站
- python爬取百度图片的思路与代码(最后附上了代码)
- 【转载】秦九韶算法 Horner算法
- 嵌入式编程中的堆栈溢出检测
- 启发式算法(通俗解释)
- 2019最新Java实战开发今日头条资讯网站
- 关于程序设计中的框架结构
- Web综合应用案例-限时秒杀效果的制作
- Data Masking-克隆“真实”的假数据
- 考技术中称计算机一类二类,成都工贸职业技术学院2020年单招职业技能测试考试大纲(面向中职-信息技术类)...
- vb.net 文本转语音
- vb html 乱码,vb输出html乱码怎么办
- html css动画自动旋转,html – 使这个CSS3动画旋转只旋转一次