python3GUI--音乐播放器(精简版)By:PyQt5(附下载地址)

news2024/11/19 1:53:05

文章目录

  • 一.前言
  • 二.预览
    • 1.主界面
    • 2.歌单页
    • 3.歌词页
    • 4.播放列表
    • 5.mini
    • 6.设置
  • 三.心得
    • 1.解耦
    • 2.体验优化
    • 3.歌词显示
  • 四.总结


一.前言

传送门:
1.python3GUI–打造一款音乐播放器By:PyQt5(附下载地址)

2.python3GUI–音乐播放器第二弹By:PyQt5(附下载地址)

3.python3GUI–音乐播放器第三弹By:PyQt5(附下载地址)

本次在前面三个版本上进行代码删减,去掉冗余功能,注重提升用户体验,更换API,提高播放成功率。

二.预览

1.主界面

请添加图片描述
主界面延续之前的风格,对部分内容进行删减。
请添加图片描述

增加了歌单推荐,每张歌单都有30首歌曲
请添加图片描述
模仿web版x易云的banner,点击banner后,就会对banner推荐内容进行搜索

2.歌单页

请添加图片描述
上图为本地(下载)歌单
请添加图片描述
上图为在线歌单 or 搜索结果页

3.歌词页

请添加图片描述
本次优化了歌词页的歌词逻辑,增加了交互动画
请添加图片描述
增加了歌词页切换动画

4.播放列表

播放列表风格不变
请添加图片描述

5.mini

在这里插入图片描述
mini仿照x易云的mini窗口,做了相关交互动画
请添加图片描述

6.设置

本次重新绘制了设置窗口,设置窗口分为基本设置、搜索下载设置、高级设置。请添加图片描述

请添加图片描述
请添加图片描述

三.心得

1.解耦

解耦思路不仅仅应用在逻辑代码设计过程中,应该用在软件开发的各个环节当中,举个例子:通过设置多个QTableWidget将同类的不同数据区别展示,通过设置QStackedWidget的索引,展示相应的table,能够有效地在UI代码上解耦。

2.体验优化

如果您下载了本次我打包好的exe文件,就能够明显体验到,本次的软件启动、响应有了明显的提升,本次在UI设计上使用了缓存思路,把可能重复使用的资源文件(如:banner、歌手图片)缓存到本地,以提升整个UI响应速度,通过QThread配合信号和槽机制,让耗时的操作在子线程中进行,避免阻塞UI主线程,其中,在线音乐的源、歌词、歌图、歌手图、搜索结果、歌单图等数据都是在子线程中进行的。

3.歌词显示

记得前面笔者单独说了下歌词的显示机制,虽然简单实现了歌词的显示,并且能够和当前播放歌词匹配,但是仔细的话能够发现还是存在bug,比如歌词进度对不上、最后一局歌词无法渲染。本次重新调整了歌词显示逻辑,仍然使用正则切割出指定格式的歌词item,但是歌词的改变是通过QTimer实现的,并不是和player绑定,这样做提高了歌词的同步性、能够显示所有歌词。

四.总结

本次对音乐播放器进行了精简代码,约用了5500行代码,其中七分之三为UI代码,七分之三为逻辑代码,七分之一为引擎代码。本次提升了软件的稳定性、流畅性,打包好放在了这里,大家自取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/112691.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LD_PRELOAD劫持

在前面UUCTF的uploadinject题,遇到了 LD_PRELOAD劫持,之前没遇见过,刚好借此机会学一学。不能小瞧这个变量,它甚至可以弹shell,绕过disable_functions,非常危险。下面来介绍一下这个变量,以及怎…

XDocReport使用入门

XDocReport 简介 XDocReport是GitHub上根据麻省理工学院许可证开源的Wrod导出框架。XDocReport可以根据ODT、Doc、Docx文档模板通过模板引擎语法(Freemarker、Velocity)转换为另外一种格式文档(Doc、Docx、XHTML、PDF)。 XDocR…

防沉迷管理系统

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 1、用户模块 1.1注册:用户通过注册生产账号,并在数据库存储数据 1.2登录:用户登录后…

k8s学习-CKA真题-k8s升级(kubeadm、kubelet、kubectl等)

目录题目解析命令准备工作升级组件升级kubectl、kubelet收尾结果killer 模拟环境题目解析解题参考题目 解析 结合博主当前环境,调整后题目为: 现有的 Kubernetes 集权正在运行的版本是 1.23.6,仅将主节点上的所有 kubernetes 控制面板和组件…

【语音处理】基于加权压力匹配方法(WPMM)的声音系统研究(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

【小程序】案例 - 本地生活(列表页面)

1. 演示页面效果以及主要功能 页面导航并传参 上拉触底时加载下一页数据 下拉刷新列表数据 2. 列表页面的 API 接口 以分页的形式,加载指定分类下商铺列表的数据: 接口地址 https://www.escook.cn/categories/:cate_id/shops URL 地址中的 :cate…

博泰应宜伦:智能汽车上攻时刻,需要“国家级”平台登场

作者 | 张祥威 编辑 | 王博汽车智能化转型的道路上,有个问题可能并非杞人忧天,而是值得整个行业警醒的。那就是: 中国的智能汽车发展,是否会被国外“卡脖子”? 卡脖子的担忧,其实也可以理解为,中…

【Linux】shell及其运行原理

目录1.什么是shell2.shell的功能3.shell的感性理解4.为什么不安装图形化界面1.什么是shell shell : 操作系统内核的外壳 通常来讲,计算机硬件是由运算器、控制器、存储器、输入/输出设备等硬件共同组成的,而让各种硬件设备各司其职且能协同运…

【基础强训】day3

一、选择题 &#x1f4a6;第1题&#xff1a; 以下程序的输出结果是&#xff08;&#xff09; #include <stdio.h> main() { char a[10] {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, *p; int i; i 8; p a i; printf("%s\n", p - 3); } A 6 B 6789 C 6 D 789 B 先定义…

阳了之后,python实用工具之:疫情信息快速查看

嗨害大家好鸭&#xff01;我是小熊猫&#xff01;&#xff08;阳了个阳版&#xff09; &#xff08;先给大家消消毒&#xff09; 不好意思&#xff0c;很久没给大家更新了… 主要是小熊猫我不小心阳了… 大家要多注意自己的身体健康 多喝点热水 这个真的是个好东西 在家里稍…

深度学习—00入门 神经网络 pytorch

1、深度学习简介 深度学习是机器学习的一个分支&#xff0c;简单来说就是通过人工神经网络&#xff0c;强行在业务的 输入 和 输出 之间&#xff0c;暴力耦合一个出一个数学模型。 1.1 深度学习特点 1、由于是暴力耦合出来的模型&#xff0c;自然模型可解释性很差&#xff0c…

STM32 cubeMX配置OLED

文章目录前言一、OLED的接线二、cubeMX的配置三、OLED的驱动代码四、OLED的使用总结前言 本篇文章主要介绍OLED的操作和使用。 一、OLED的接线 OLED一共有四根线这里我使用的是IIC的OLED显示屏。 VCC----3.3V或者5V GND-----GND SDA-----PB7 SCL-----PB6 二、cubeMX的配置 …

TFT-LCD屏幕触摸校准

TFT-LCD屏幕触摸校准 触摸屏幕分类 1.电阻屏 电阻屏的主要部分是一块与显示器表面配合非常好的电阻薄膜屏&#xff0c;这是一种多层的复合薄膜&#xff0c;由一层玻璃或有机玻璃作为基层&#xff0c;表面涂有一层秀明的导电层&#xff0c;上面再盖有一层外表硬化处理、光滑防…

通达信量化接口需要被程序化执行吗?

其实通达信量化接口其实是量化交易模型的需要被执行的一种方式&#xff0c;但如果你交易者的策略模型采用比较中低频的交易执行方式&#xff0c;比如每天只交易一次&#xff0c;甚至每周或每月才轮动一次。那么小编认为通达信量化接口建议是否程序化执行也是一个非常重要的指标…

UI自动化测试-selenium元素定位

在使用Selenium和WebDriver进行UI自动化测试时&#xff0c;我们首先需要对元素定位&#xff0c;那么如何来定位元素呢&#xff1f; HTML 在进行元素定位之前&#xff0c;我们要对html代码有所了解。 <div classs_form><div classs_form_wrapper><div idlg>…

菜鸟程序员,被无良HR欺骗,因祸得福,竟“意外”拿下美团offer

前因后果 先讲述一下自己这次被无良HR欺骗坑惨的经历吧&#xff0c;面试的是一家上海某电商公司&#xff0c;给的薪资是不错。面试的时候&#xff0c;找我要了工资流水&#xff0c;然后给了我口头offer&#xff0c;就让我回去等了邮件了。回去之后就觉得offer没啥问题&#xff…

tomcat工作任务训练

文章目录1.安装jdk1.8 tomcat9.0 发布java项目部署java环境部署tomcat启动tomcat&#xff0c;测试访问上传项目安装数据库&#xff0c;建库建户web页面配置jpress测试写文章&#xff0c;上传附件2.tomcat多实例安装 比如 8080 8081 8082 发布3个论坛项目 war包也给你了tomcat多…

(memcpy memmove memcmp memset)内存操作函数详解

目录 &#x1f355;注意&#xff1a;内存操作函数隶属于头文件&#xff0c;因此在使用任何内存操作函数之前都必须引用 &#x1f95e;memcpy函数 &#x1f35e;memcpy函数的初步认识及使用 &#x1f373;样例示范&#xff1a; &#x1f9c8;代码呈现&#xff1a; &#x1f9c…

浏览器原理二三事

目录 1. 如何理解 JavaScript 是单线程的 2. 进程与线程 2.1 在浏览器中&#xff0c;如何理解进程和线程的关系&#xff1f; 2.2 浏览器的五种进程 2.2.1 浏览器主进程&#xff08;Browser 进程&#xff09; 2.2.2 浏览器渲染进程&#xff08;Renderer 进程&#xff09; …

论文投稿指南——中文核心期刊推荐(航空、航天2)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…