Python—实现本地音乐播放器(添加/播放/暂停/下一首/上一首/音量/打开超链接)

news/2024/11/24 7:24:52/

文章目录

      • 1.样例
      • 2.分析
          • 2.1播放器界面
          • 2.2功能
          • 2.2.1添加音乐,选择文件夹,显示文件夹里.Mp3文件
          • 2.2.2播放音乐,开始播放第一首音乐,按钮由"播放"变为"暂停",点击"暂停",变为"播放",播放显示Playing...
          • 2.2.3下一首,点击切换播放下一首音乐
          • 2.2.4上一首,点击切换播放上一首音乐
          • 2.2.5音量,滑动控制音量
          • 2.2.6点击打开网页
      • 3.源码

1.样例

在这里插入图片描述

2.分析

  • 1.播放器界面
  • 2.功能
2.1播放器界面

在这里插入图片描述

  • button:添加/播放/暂停/下一首/上一首
  • Scale:音量条
  • Label
2.2功能
2.2.1添加音乐,选择文件夹,显示文件夹里.Mp3文件

在这里插入图片描述

def buttonAddClick():# 添加文件# 声明全局变量folder,resglobal folderglobal resif not folder:folder = tkinter.filedialog.askdirectory()# 列表指导式,if判断是否结尾是('.mp3','.wav','.ogg','.m4a','.flac'),识别音频文件# musics得到文件内容musics = [folder + '\\' + music for music in os.listdir(folder) if music.endswith(('.mp3'))]ret = []for i in musics:ret.append(i.split('\\')[1:])  # 切片,取到:后面的操作res.append(i.replace('\\', '/'))  # 将i张的\\替换成/,列表添加到resvar2 = StringVar()var2.set(ret)  # 将ret列表去重,set集合lb = Listbox(window, listvariable=var2)  # 列表箱lb.place(x=405, y=170, width=350, height=190)
2.2.2播放音乐,开始播放第一首音乐,按钮由"播放"变为"暂停",点击"暂停",变为"播放",播放显示Playing…

在这里插入图片描述

def buttonPlayClick():# 点击播放buttonNext['state'] = 'normal'buttonPrev['state'] = 'normal'# 选择要播放的音乐文件夹if pause_resume.get() == '播放':pause_resume.set('暂停')global folderif not folder:folder = tkinter.filedialog.askdirectory()if not folder:returnglobal playingplaying = True# 创建一个线程来播放音乐,当前主线程来接收用户操作t = threading.Thread(target=play)# start执行线程t.start()elif pause_resume.get() == '暂停':pygame.mixer.music.pause()pause_resume.set('继续')elif pause_resume.get() == '继续':pygame.mixer.music.unpause()pause_resume.set('暂停')
2.2.3下一首,点击切换播放下一首音乐

在这里插入图片描述

def buttonNextClick():# 下一首,需要先暂停当前音乐,而主线程接收用户操作global playingpalying = Falsepygame.mixer.music.stop()global numif len(res) == num:num = 0playing = True# 必须创建一个线程来播放音乐,当前主线程来接收用户操作t = threading.Thread(target=play)# start执行线程t.start()
2.2.4上一首,点击切换播放上一首音乐

在这里插入图片描述

def buttonPrevClick():# 上一首global playingpalying = Falsepygame.mixer.music.stop()global numif num == 0:num = len(res) - 2elif num == len(res) - 1:num -= 2else:num -= 2playing = True# 必须创建一个线程来播放音乐,当前主线程来接收用户操作t = threading.Thread(target=play)# start执行线程t.start()
2.2.5音量,滑动控制音量

在这里插入图片描述

def control_voice(value=0.5):# 声音控制# value:0.0-1.0pygame.mixer.music.set_volume(float(value))
2.2.6点击打开网页

在这里插入图片描述

# 打开超链接
def open_url(event):webbrowser.open("http://www.romantik.top:81/", new=0)

3.源码

源代码下载链接:https://download.csdn.net/download/qq_20185737/13692920?spm=1001.2014.3001.5501


http://www.ppmy.cn/news/68523.html

相关文章

canvas判断是否白屏

方案一: canvas的自动化测试不太好做,因为说白了就是一张图片,在canvas上画了什么,对不对根本不知道。 现在想到的唯一的方法就是截图比较吧。 具体做法,说起来也很简单。 先把case写好,然后跑起来&…

【Linux】Linux的文件操作

文件操作对于不少编程初学者来说都是一件头疼的事情,不管你学习的是什么编程语言,C/C/Java/Go/Python ,因为我们学习到的文件相关的操作对你来说都是一个黑盒,我们只是知道我们应该怎么使用相应的文件函数进行操作,而对于内部的实…

​文生视频: 任务、挑战及现状

示例视频由 ModelScope 生成。 最近生成模型方向的进展如排山倒海,令人目不暇接,而文生视频将是这一连串进展的下一波。尽管大家很容易从字面上理解文生视频的意思,但它其实是一项相当新的计算机视觉任务,其要求是根据文本描述生成…

刷题65:不同的二叉搜索树

题意描述: 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 思路: 1、确定dp数组(dp table)以及下标的含义dp[i] :…

【项目-前后端交互-项目】表白墙【servlet实践】

【项目—前后端交互 案例】表白墙 代码示例: 服务器版表白墙1. 准备工作2. 约定前后端交互接口3. 实现服务器端代码创建 Message 类创建 MessageServlet 类 4. 调整前端页面代码5. 数据存入文件.6. 数据存入数据库1) 在 pom.xml 中引入 mysql 的依赖2) 创建数据库, 创建 messag…

JUC之集合类

JUC包提供了一些并发安全的集合类&#xff0c;用于在多线程环境下进行共享数据的操作&#xff0c;以解决多线程间的竞争条件和线程安全问题。 CopyOnWriteArrayList 相当于线程安全的ArrayList public class ListTest {public static void main(String[] arge){List<Strin…

uniapp 地图组件(map)的使用总结

总结一下本次在uniapp中使用map遇到的一些问题 文章分别是基础 定位图标 获取自身经纬度 通过经纬度获取当时城市信息 首先先看成品 首先引入map组件 <template><view class"content"><map style"width: 100%; height: 90vh;" :layer-…

【利用AI让知识体系化】3万多字让你我快速入门数据结构与算法

文章目录 第一章&#xff1a;介绍数据结构与算法1.1 数据结构的概念1.2 算法的概念1.3 数据结构与算法的关系1.4 为什么需要学习数据结构与算法 第二章&#xff1a;时间与空间复杂度2.1 什么是时间复杂度2.2 时间复杂度的算法分析2.3 什么是空间复杂度2.4 空间复杂度的算法分析…