使用PyQt5/PySide2编写一个极简的音乐播放器_pyside2播放声音-程序员宅基地

技术标签: python  图形界面实战  pyqt  gui  

疫情肆虐,憋在家实在无聊,索性写点东西,于是就有了这个极极极极极简的音乐播放器。

在这里插入图片描述
这个极极极简的音乐播放器类似于“阅后即焚”的软件,播放器可以随机播放歌曲,获取下一首歌曲,不能重新播放上一首歌曲,不能获取歌曲的名称和演唱者。听过的歌曲,就像过眼云烟,放完即散。

下面来看看如何用Python实现这个音乐播放器软件吧!

一、创建UI界面

首先,我们来创建这个播放器的UI界面。这个播放器一共有6个控件:

  • 左上角的程序关闭按钮;
  • 左侧的播放状态标签;
  • 顶部的slogan;
  • 播放/暂停按钮;
  • 下一首按钮;
  • 播放进度条;

基于以上控件,我们用一个网格布局来排列:

class Music(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.setFixedSize(400,200)
        self.setWindowTitle("州的先生")
        self.init_ui()
        self.custom_style()
        self.playing = False # 播放状态初始化为否
        self.player = QMediaPlayer(self)

    # 设置样式
    def custom_style(self):
        self.setStyleSheet('''
            #main_widget{
                border-radius:5px;
            }
            #play_btn,#pervious_btn,#next_btn{
                border:none;
            }
            #play_btn:hover,#pervious_btn:hover,#next_btn:hover{
                background:gray;
                border-radius:5px;
                cursor:pointer;
            }
        ''')
        self.close_btn.setStyleSheet('''
            QPushButton{
                background:#F76677;
                border-radius:5px;
                }
            QPushButton:hover{
                background:red;
                }''')
        self.status_label.setStyleSheet('''
            QLabel{
                background:#F7D674;
                border-radius:5px;
                }
        ''')

    
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/y747702801/article/details/104267423

智能推荐

【SLAM】G2O优化库超详细解析_g2o库-程序员宅基地

文章浏览阅读8.6k次,点赞8次,收藏33次。通用图优化。为何叫通用呢?G2O的核里带有各种各样的求解器,而它的顶点、边的类型则多种多样。通过自定义顶点和边,事实上,只要一个优化问题能够表达成图,那么就可以用G2O去求解它。常见的,比如bundle adjustment、ICP、数据拟合,都可以用G2O来做。所谓图优化,是把优化问题表现成图的一种方式,这里的图是图论意义上的图。一个图由若干个顶点,以及连着这些顶点的边组成。在这里,我们用顶点表示优化变量,而用边表示残差项。_g2o库

EMNLP 2023 | 阅读顺序很重要:蚂蚁联合复旦提出全新多模态文档信息抽取模型-程序员宅基地

文章浏览阅读165次。作者 |蚂蚁安全天鉴实验室来源 |蚂蚁技术AntTech近日,蚂蚁安全天鉴实验室与复旦大学合作,针对视觉富文档的实际应用场景,指出了应用场景下常见的阅读顺序错乱问题,并强调该问题会严重影响当前模型的效果。针对上述问题,天鉴实验室在《Reading Order Matters: Information Extraction from Visually-rich Documents by Tok..._emnlp2023 命名实体识别

【React】React-18版本脚手架使用、React-17 与 React-18 入口与卸载区别_react18和17的区别-程序员宅基地

文章浏览阅读663次。React18 不在使用 ReactDOM.render( )来进行渲染,更新为ReactDOM.createRoot(rootNode).render()_react18和17的区别

图的基本概念_图的定义-程序员宅基地

文章浏览阅读1.5k次,点赞2次,收藏2次。图(Graph)G由两个集合V和E组成,记为G=(V,E),其中V是顶点的有穷非空集合,E是V中顶点偶对的有穷集合,这些顶点偶对称为边。V(G)和E(G)通常分别表示图G的顶点集合和边集合,E(G)可以为空集。若E(G)为空,则图G只有顶点而没有边。对于图G,若边集E(G)为有向边的集合,则称该图为有向图;若边集E(G)为无向边的集合,则称该图为无向图。在有向图中,顶点对是有序的,它称为从顶点x到顶点y的一条有向边。因此,与是不同的两条边。_图的定义

IOS 切面统计事件解耦_alpvp-程序员宅基地

文章浏览阅读575次。IOS 切面统计事件解耦统计这个事情可以说是个巨无语的系统,当然不把他独立出来也就不是什么问题了,只是一堆牛皮癣似得代码穿插在项目各个地方,毕竟真正应用到一个app里的统计都跟业务有着很强的绑定关系,脱离业务的统计数据基本没什么大用,先吐槽一波再开始正文。。。。基础封装先从用第三方的来说,基本上就只是需要包个壳就ok了,建个manager,初始化sdk一封装,加几个常用统计..._alpvp

解决在一个页面多次调用封装echarts组件只有第一个生效的问题_为什么html里面放多个echarts图表,只加载第一个-程序员宅基地

文章浏览阅读3.5k次,点赞13次,收藏10次。最近在写了一个封装echarts的dome时 发现了一些问题。这是我的echarts<template> <div id="echart"></div></template><script>export default { name: 'echart', props: ["option"], mounted(){ let myChart = this.$echarts.init(document.getElemen_为什么html里面放多个echarts图表,只加载第一个

随便推点

[20170816]Join Elimination Bug.txt-程序员宅基地

文章浏览阅读68次。[20170816]Join Elimination Bug.txt https://jonathanlewis.wordpress.com/2017/08/14/join-elimination-bug/ --//自己重复..._join elimination

世界荣耀,做AI时代的海-程序员宅基地

文章浏览阅读800次,点赞20次,收藏22次。在巴塞罗那参加MWC 2024的几天,密集领略了来自全球各个国家、各个领域的科技成果。其中,AI与5G-A可说是今年MWC的明星,相关展出百花齐放。但在智能终端领域,却呈现出“一枝独秀”的态势。如果你问现场媒体与观众,哪家智能终端品牌带来的产品最全面、技术最前沿,前来站台的朋友最多,咖位最大,那么得到的答案只有一个——荣耀。2月25日,荣耀在MWC 2024发布了与全球合作伙伴合作的全新一代旗舰荣...

VMware NSX原理与实践----网络基础之网络分层_vmware nsx 三层网络-程序员宅基地

文章浏览阅读722次。一、网络分层以及详解1.1、OSI模型包含7层,可以将它们分为两组,上3层指定了终端中的应用程序如何彼此通信以及如何与用户进行交流;下4层指定了如何进行端到端的数据传输。从上到下,共有以下七层:应用层(提供用户界面)、表示层(表示数据进行加密等处理)、会话层(将不同应用程序的数据进行分离)、传输层(提供可靠或不可靠的传输,在重传前执行纠错,端到端连接)、网络层(提供逻辑地址,路由器使用他们来选择..._vmware nsx 三层网络

nodejs爬虫与python爬虫_Python,Node.js 哪个比较适合写爬虫?-程序员宅基地

文章浏览阅读2.6k次。主要看你定义的“爬虫”干什么用。1、如果是定向爬取几个页面,做一些简单的页面解析,爬取效率不是核心要求,那么用什么语言差异不大。当然要是页面结构复杂,正则表达式写得巨复杂,尤其是用过那些支持xpath的类库/爬虫库后,就会发现此种方式虽然入门门槛低,但扩展性、可维护性等都奇差。因此此种情况下还是推荐采用一些现成的爬虫库,诸如xpath、多线程支持还是必须考虑的因素。2、如果是定向爬取,且主要目标是..._node爬虫和python爬虫

CSS代码的命名惯例_css根据代码结构起名-程序员宅基地

文章浏览阅读269次。CSSS代代码的命命名惯惯例: 通过过分析一个流流行三栏布局中的必要元素,来为大家家讲解关于使使用语义化方方法替代结构化方法来来命名 CSS类类的建议和指导。CSS类命名的语义义化 VS结构构化方式一般般而言, CSS类名的语义义化声明方式应应当考虑你的页面中某个个相对元素的的”用意”,独立于它它的”定位”或确切的特特性(结构化方方式)。像 lefttBar, redText,smallTitle_css根据代码结构起名

MySQL 批量插入/填充数据 - 实践_mysql insert int 空-程序员宅基地

文章浏览阅读7.1k次。1.应用场景应用场景之一:有时,我们需要创建表并填充大量测试数据。 2.学习/操作 方法如下: 方法一: 通过储存过程 1.我们先来新建一个表,创建两个普通索引 CREATE TABLE IF NOT EXISTS `t` ( `id` int(11) NOT NULL, `a` int(11) DEFAULT NULL,..._mysql insert int 空