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

news2025/2/27 20:50:01

文章目录

      • 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,res
    global folder
    global res
    if 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张的\\替换成/,列表添加到res
        var2 = 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 folder

        if not folder:
            folder = tkinter.filedialog.askdirectory()
        if not folder:
            return
        global playing
        playing = 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 playing
    palying = False
    pygame.mixer.music.stop()
    global num
    if len(res) == num:
        num = 0
    playing = True
    # 必须创建一个线程来播放音乐,当前主线程来接收用户操作
    t = threading.Thread(target=play)
    # start执行线程
    t.start()
2.2.4上一首,点击切换播放上一首音乐

在这里插入图片描述

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

在这里插入图片描述

def control_voice(value=0.5):
    # 声音控制
    # value:0.0-1.0
    pygame.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.coloradmin.cn/o/520432.html

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

相关文章

【ElasticSearch】分词器(ElasticSearchIK分词器)

1. 分词器介绍 •IKAnalyzer 是一个开源的,基于java语言开发的轻量级的中文分词工具包•是一个基于Maven构建的项目•具有60万字/秒的高速处理能力•支持用户词典扩展定义 2. ik 分词器安装 IK 分词器安装 3. 分词器的使用 IK分词器有两种分词模式:ik…

港科夜闻|香港科大与香港科大(广州)管理层联席会议顺利召开

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大与香港科大(广州)管理层联席会议顺利召开。这是自内地和香港全面恢复通关以来,两校的高级管理团队首次举行线下的联席会议,面对面交流、讨论有关两校协同发展的重要议题。两校持续深入推进…

【零基础学web前端】走进CSS的大门,CSS引入方式,CSS基础选择器,CSS复合选择器

前言: 大家好,我是良辰丫,前面我们已经学了html的相关知识,今天我们一起去探索前端网页的css,那么css到底是什么呢?我们慢慢往下看.💞💞 🧑个人主页:良辰针不戳 📖所属专栏:零基础学web前端 🍎…

二叉树层级遍历以及相关练习

二叉树层级遍历以及相关练习 文章目录 二叉树层级遍历以及相关练习思想步骤代码实现相关练习 力扣:102. 二叉树的层序遍历 - 力扣(Leetcode) 思想 层序遍历一个二叉树。就是从左到右一层一层的去遍历二叉树。 使用队列实现二叉树广度优先遍…

算法修炼之练气篇——练气二十层

博主:命运之光 专栏:算法修炼之练气篇 前言:每天练习五道题,炼气篇大概会练习200道题左右,题目有C语言网上的题,也有洛谷上面的题,题目简单适合新手入门。(代码都是命运之光自己写的…

实例演示如何结合Selenium和Requests进行自动化测试

下方查看历史精选文章 重磅发布 - 自动化框架基础指南pdfv1.1大数据测试过程、策略及挑战 测试框架原理,构建成功的基石 在自动化测试工作之前,你应该知道的10条建议 在自动化测试中,重要的不是工具 Selenium和Requests是两个常用的自动化测试…

Meme和BRC-20的暴跌洗盘

* * * 原创:刘教链 * * * 5月以来的Meme(模因币,发音类似“谜姆”)狂欢,有ERC-20版本的Meme比如Pepe(青蛙佩佩),也有BRC-20版本的Meme比如ordi(序数协议本身的名字&…

IM即时通讯系统[SpringBoot+Netty]——梳理(二)

文章目录 五、IM开发核心之构建TCP网关(上)1、编写LimServer2、编写LimWebSocketServer3、使用snakeyaml动态配置文件4、大白话讲通信协议—详解主流通讯协议4.1、文本协议4.2、二进制协议4.3、xml协议4.4、可以落地使用的协议 5、私有协议编解码—设计篇…

ArcGIS栅格重采样与算法选择

本文介绍在ArcMap软件中,实现栅格图像重采样的具体操作,以及不同重采样方法的选择依据。 首先,如下图所示,是我们待重采样的栅格图像的属性界面。其中,可以看到此时栅格像元的边长为0.4867左右(由于图层是地…

“技术开发最应该做什么?”,聊聊我在服务端开发5年的理解和收获

我们新推出大淘宝技术年度特刊《长期主义,往往从一些小事开始——工程师成长总结专题》,专题收录多位工程师真诚的心路历程与经验思考,覆盖终端、服务端、数据算法、技术质量等7大技术领域,欢迎一起沟通交流。 本文为此系列第二篇…

我的.net视频课程

https://edu.csdn.net/lecturer/222?spm1002.2001.3001.4144

9.并发基础与CAS基本原理

线程的状态/线程的生命周期 初始化 Thread thread new Thread();运行 thread.start(); 运行中状态 ——> 调用yeild进入就绪状态就绪状态 ——> 通过系统调度(获取到cpu时间片),又会进入到运行中状态 等待 调用如下方法就从运行进入到等待状态: Object.wait()、Object.…

2360. 图中的最长环

方法一&#xff1a;拓扑排序加搜索 class Solution { public:bool vis[100005];vector<int>v[100005];int dfs(vector<int> &dist,int st,int step){vis[st]true; // cout<<st<<endl;int res0;for(int i0;i<v[st].size();i){int xv[st][i];if(…

Angular开发之——Angular项目介绍(03)

一 概述 Angular项目目录介绍Angular程序如何启动 二 Angular项目目录介绍 2.1 项目目录 2.2 目录结构说明 工作区配置文件 node_modules &#xff1a;第三方依赖包存放的目录src&#xff1a;应用源代码目录angular-cli.json&#xff1a; Angular命令行工具的配置文件&…

设计模式之桥接模式释义与举例剖析

文章目录 一、前言二、模式定义三、模式结构四、案例具体实现五、 模式优缺点六、 模式使用场景七、 模式总结 一、前言 开始学Java讲继承的时候&#xff0c;总喜欢用一个例子来讲解&#xff0c;那就是画图形。这里有一个画笔&#xff0c;可以画正方形、长方形、圆形。除了画出…

OpenCV-答题卡识别-四点透视变换

目录 答题卡识别图片读取四点透视变换 划出区域处理选择题区域处理准考证号区域处理科目区域得分导出结果 封装成品 答题卡识别 使用opencv技术&#xff0c;实现对答题卡的自动识别&#xff0c;并进行答题结果的统计 技术目的&#xff1a; 能够捕获答题卡中的每个填涂选项;将…

【新星计划-2023】TCP三次握手和四次挥手讲解

关于TCP三次握手和四次挥手&#xff0c;各位想必在读大学的时候或者是在面试的时候一定遇到过&#xff0c;三次握手和四次挥手本身是不是太难的&#xff0c;但它容易忘&#x1f61e;&#xff0c;今天我就在这里给大家讲解一下三次握手与四次挥手。 一、三次挥手 TCP三次握手建…

我,大厂P9,找不到工作

作者| 老W 编辑| Emma 来源| 技术领导力(ID&#xff1a;jishulingdaoli) K哥写在前面的话&#xff1a;这是一位读者投稿&#xff0c;读者老W讲述了自己从大厂P9失业后、再就业的故事&#xff0c;并总结了自己的心路历程&#xff0c;很真实的记录与思考&#xff0c;值得大家借…

SensorX2car:在道路场景下的完成传感器到车体坐标系标定

文章&#xff1a;SensorX2car: Sensors-to-car calibration for autonomous driving in road scenarios 作者&#xff1a;Guohang Yan, Zhaotong Luo, Zhuochun Liu and Yikang Li 编辑&#xff1a;点云PCL 代码&#xff1a;https://github.com/OpenCalib/SensorX2car 作者单位…

IDEA+maven+Springboot工程创建超详细过程示例

IDEAmavenSpringboot工程创建超详细过程示例 1、IDEA、Maven下载安装及IDEA配置Maven教程2、IDEAmavenSpringboot的web工程创建示例2.1 SpringBoot简介2.2 maven形式创建sprintboot工程2.3 导入相关依赖2.4 创建SpringBoot启动类2.5 创建 Controller2.6 启动项目2.7 配置端口信…