凌的博客

PyQt5 简单Mp3播放器--QMediaPlayer

mp3 pyqt5 num
2019-08-25 python 2790

1.png

import sys

from PyQt5.QtWidgets import QWidget,QApplication,QPushButton,QSlider,QLabel
from PyQt5.QtMultimedia import QMediaPlayer,QMediaContent
from PyQt5.QtCore import QUrl,Qt
import os
class Mp3(QWidget):


    def __init__(self):
        super().__init__()
        self.initUI()

        self.control_flag = 0

    def formatTime(self,num):
        num = int(num)

        if num>0:
            min = str(int(num/60+100))[1:3]
            sec = str(int(num%60+100))[1:3]
            return "%s:%s" % (str(min),str(sec))

        return "00:00"

    def initUI(self):

        mp3file = "yhbk.mp3"
        self.player = QMediaPlayer()
        self.player.setMedia(QMediaContent(QUrl.fromLocalFile(mp3file)))
        self.player.play()

        mp3_lbl = QLabel(os.path.basename(mp3file),self)
        mp3_lbl.move(100, 30)

        #mp3 时长
        self.time_lbl = QLabel(self)
        self.time_lbl.move(130, 60)

        self.volume_slider = QSlider(self)
        self.volume_slider.resize(10,50)
        self.volume_slider.move(240,80)
        self.volume_slider.valueChanged[int].connect(self.volume)

        self.player.setVolume(25)
        self.volume_lbl = QLabel("25",self)
        self.volume_lbl.move(240, 130)


        self.play_slider = QSlider(Qt.Horizontal,self)
        self.play_slider.resize(200,20)
        self.play_slider.move(30,80)

        self.play_slider.sliderPressed.connect(self.setControlIn)
        self.play_slider.sliderReleased.connect(self.setControlOut)
        self.play_slider.sliderMoved.connect(self.setControlIn)

        self.player.pause()
        self.actionbtn = QPushButton("暂停",self)
        self.actionbtn.move(100, 130)
        self.actionbtn.clicked.connect(self.action)

        # 信号、槽
        self.player.positionChanged.connect(self.playState)
        self.player.durationChanged.connect(self.playTime)


        self.setGeometry(300,300,300,200)
        self.setWindowTitle("Mp3")

    # 按下
    def setControlIn(self):
        self.control_flag = 1

    #离开
    def setControlOut(self):
        self.control_flag = 0
        time = int(self.player.duration() / 1000)
        pos = int(self.play_slider.value()/100*time*1000)
        self.player.setPosition(pos)


    #播放位置
    def playState(self):
        dur = int(self.player.position()/1000)
        time =  int(self.player.duration()/1000)

        self.time_lbl.setText("%s/%s" % (self.formatTime(dur), self.formatTime(time)))
        self.time_lbl.adjustSize()

        #控制进度
        if self.control_flag == 0:
            self.play_slider.setValue(int(dur/time*100))


    def playTime(self):
        time =  int(self.player.duration()/1000)
        self.time_lbl.setText("%s/%s" %(self.formatTime(0),self.formatTime(time)))
        self.time_lbl.adjustSize()


    def volume(self,num):
        self.player.setVolume(num)
        self.volume_lbl.setText(str(num))
        self.volume_lbl.adjustSize()

    def action(self):

        if self.actionbtn.text() == "播放":
            self.actionbtn.setText("暂停")
            self.player.pause()
        else:
            self.actionbtn.setText("播放")
            self.player.play()


if __name__ =="__main__":

    app = QApplication(sys.argv)
    ex = Mp3()
    ex.show()
    sys.exit(app.exec_())


很赞哦! (0)
  • 上一篇

    PyQt5 所有消息框 实例

    from PyQt5.QtWidgets import * fr...

  • 下一篇

    python 主线程强制关闭子线程

    import threading, ctypes, inspect ...

文章评论

0条评论
我的世界,注定与众不同
  • 阿里云git安装

  • 忘羡一梦 美梦成真

  • 没有唯一

  • 在centos 安装python3

  • php 双向加密解密

  • python 定时器(timer)

标签云

猜你喜欢

PHP网站源码松岗至尊标王哪家好坂田百姓网标王推广报价商洛优化价格枣庄百搜标王公司鞍山网站优化排名公司福永网站推广工具公司临夏网页设计报价南澳网站改版报价临猗百度爱采购黄冈企业网站改版报价海东模板推广公司枣庄SEO按天收费推荐眉山seo网站优化价格雅安seo排名公司黄冈网络营销报价红河网站改版报价上海百度标王廊坊SEO按天收费广安关键词排名多少钱毕节网站优化按天计费哪家好兰州网站改版公司丽水百度爱采购公司成都百度爱采购公司淮安网站搜索优化思茅seo优化许昌网页设计报价莱芜网页制作推荐景德镇网络营销价格陇南关键词按天计费报价文山seo网站优化价格歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化