文档章节

pyqt 多媒体

方舟编译器
 方舟编译器
发布于 2014/08/25 15:45
字数 376
阅读 120
收藏 1

pyqt播放多媒体,使用到的是 phonon.Phonon 类的VideoPlayer对象

首先创建一个VideoPlayer对象, 然后创建一个MediaSource对象

最后执行vidioPlayer对象的play方法,即可播放音乐

暂停方法,pause,seek调转到某一帧,可做快进快退功能

继续播放,再次执行play,play方法不要穿参数


# -*- coding: utf-8 -*-


from PyQt4 import QtCore, QtGui, Qt


class Player(QtGui.QMainWindow):


    style = 'background:url(images/{0}.png) no-repeat center;border:none;'

    currentMovie = None


    def __init__(self):

        QtGui.QMainWindow.__init__(self)

        self.setWindowTitle("ADAM Player") #设置窗体的标题

        self.resize(800, 500)   #设置窗体大小

        self.setWindowIcon(QtGui.QIcon('gita.ico'))  #设置icon

        self.setStyleSheet('background:white')

        # self.setWindowFlags(Qt.Qt.FramelessWindowHint)

        self.setMask(QtGui.QPixmap('images/bg.png').mask())

        self.setMouseTracking(True)


        menu = self.menuBar()

        menu.setStyleSheet('background:#000;')

        self.menu = menu.addMenu(u'&文件')

        open = self.menu.addAction(u'打开')

        self.connect(open, QtCore.SIGNAL('triggered()'), self.openMovie)

        self.menu.setStyleSheet('background:none;')


        #播放器对象

        self.videoPlayer = phonon.Phonon.VideoPlayer(self)

        self.videoPlayer.resize(QtCore.QSize(800, 450))


        #播放按钮

        self.playBtn = QtGui.QPushButton(self)

        self.playBtn.setObjectName('playBtn')

        self.playBtn.setStyleSheet(self.style.format('play'))

        self.playBtn.setMask(QtGui.QPixmap('images/play.png').mask())

        self.playBtn.resize(48, 48)

        self.connect(self.playBtn, QtCore.SIGNAL('clicked()'), self.play) #绑定点击事件


        #重新播放按钮

        self.resetBtn = QtGui.QPushButton(self)

        self.resetBtn.setObjectName('resetBtn')

        self.resetBtn.setStyleSheet(self.style.format('reset'))

        self.resetBtn.setMask(QtGui.QPixmap('images/reset.png').mask())

        self.resetBtn.resize(48, 48)

        self.connect(self.resetBtn, QtCore.SIGNAL('clicked()'), self.restart) #绑定点击事件


        self.videoPlayer.move(0, 20)

        self.playBtn.move(20, 415)

        self.resetBtn.move(80, 415)


    def play(self):

        if not self.currentMovie:

            QtGui.QMessageBox.warning(self, u'提示', u'请选择影片')

            return False

        if self.videoPlayer.isPlaying():

            self.videoPlayer.pause()

            self.position = self.videoPlayer.currentTime()

            self.playBtn.setStyleSheet(self.style.format('play'))

        else:

            if self.videoPlayer.isPaused():

                self.videoPlayer.play()

                self.playBtn.setStyleSheet(self.style.format('pause'))

            else:

                # mediaSource = phonon.Phonon.MediaSource("./source/122195353176400128.mp3")

                # mediaSource = phonon.Phonon.MediaSource(u"./source/爱她的枪(预告片).mpeg")

                mediaSource = phonon.Phonon.MediaSource(self.currentMovie)

                self.videoPlayer.load(mediaSource)

                self.videoPlayer.play()

                self.playBtn.setStyleSheet(self.style.format('pause'))

                self.setWindowTitle(self.currentMovie)


    def restart(self):

        self.videoPlayer.seek(0)


    def openMovie(self):

        self.currentMovie = unicode(QtGui.QFileDialog.getOpenFileName(self))

        if self.currentMovie:

            self.videoPlayer.load(phonon.Phonon.MediaSource(self.currentMovie))

            self.play()




from PyQt4 import phonon


if __name__ == "__main__":

    import sys

    app = QtGui.QApplication(sys.argv)

    palyer = Player()

    palyer.show()

    sys.exit(app.exec_())


  

© 著作权归作者所有

上一篇: python ORMs
下一篇: pyqt 记事本
方舟编译器
粉丝 8
博文 49
码字总数 19546
作品 0
浦东
程序员
私信 提问
pyqt sqlite3 icu fts3 fts4 enabled 。全文搜索 功能

目标:windows下让pyqt测试程序支持sqlite3 icu fts3/4的全文搜索功能。 环境: windows XP pyqt 安装文件 PyQt-Py2.7-x86-gpl-4.9.6-1.exe pyqt 源码包 PyQt-win-gpl-4.9.4.zip python 版本...

kjpioo
2013/02/09
1K
0
PyQt 4.10 发布,支持 QT 5.0

PyQt 4.10 发布了,该版本最主要的目的是为了支持 Qt 5.0. PyQt是Qt库的Python版本。PyQt3支持Qt1到Qt3。 PyQt4支持Qt4。它的首次发布也是在1998年,但是当时它叫 PyKDE,因为开始的时候SIP...

oschina
2013/03/04
2.5K
5
PyQt 4.9.5 发布,Qt 库的 Python 版本

PyQt 4.9.5 支持 Qt 4.8.3 和 5.0.0 Beta1. PyQt是Qt库的Python版本。PyQt3支持Qt1到Qt3。 PyQt4支持Qt4。它的首次发布也是在1998年,但是当时它叫 PyKDE,因为开始的时候SIP和PyQt没有分开。...

oschina
2012/10/01
1K
3
PyQt 5.0 发布,完全支持 Qt 5.0

PyQt 5.0 发布了,该版本增加对 Qt 5.0 的支持。 PyQt是Qt库的Python版本。PyQt3支持Qt1到Qt3。 PyQt4支持Qt4。它的首次发布也是在1998年,但是当时它叫 PyKDE,因为开始的时候SIP和PyQt没有...

oschina
2013/06/18
6.9K
15
PyQt 4.8.5 发布

PyQt是Qt库的Python版本。PyQt3支持Qt1到Qt3。 PyQt4支持Qt4。它的首次发布也是在1998年,但是当时它叫 PyKDE,因为开始的时候SIP和PyQt没有分开。PyQt是用SIP写的。PyQt遵从奇趣的许可模式,...

红薯
2011/08/11
1K
4

没有更多内容

加载失败,请刷新页面

加载更多

查看线上日志常用命令

cat 命令(文本输出命令) 通常查找出错误日志 cat error.log | grep 'nick' , 这时候我们要输出当前这个日志的前后几行: 显示file文件里匹配nick那行以及上下5行 cat error.log | grep -C ...

xiaolyuh
19分钟前
3
0
六、Java设计模式之工厂方法

工厂方法定义: 定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行 类型:创建型 工厂方法-使用场景: 创建对象需要大量重复的代码 ...

东风破2019
25分钟前
3
0
win服务器管理遇到的一系列问题记录

有些小伙伴在使用iis7远程桌面管理工具的时候总是会遇到一系列的问题,下面就是为大家介绍一下服务器日常管理过程中出现的问题及我的解决办法和心得。希望能帮到大家。   拒绝服务器重新启...

1717197346
33分钟前
2
0
flutter 剪切板 复制粘贴

复制粘贴功能 import 'package:flutter/services.dart'; Clipboard.setData(ClipboardData(text:_text));Clipboard.getData;...

zdglf
35分钟前
3
0
如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?

面试题 如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题? 面试官心理分析 这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费...

米兜
36分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部