怎么拥有自己的音乐播放器?快用python来实现吧

前言

你常听音乐嘛?

在听的时候,有没有那么一瞬间

冒出一个小想法呢?

比如:拥有一个属于自己的音乐播放器

今天!就让我们来付诸行动,让想法变为现实

简易播放器

在开始我们正式的播放器之前

我们来看一个最简单的小播放器

只需要区区九行代码就可以实现噢~


首先导入模块

import time
import pygame

time是时间模块,属于内置,无需安装

pygame是第三方模块,需要安装


那么如何安装python第三方模块?

这里给大家说明:

win + R 输入 cmd 点击确定, 输入安装命令

pip install 模块名 (pip install pygame)


解决完模块问题后,我们继续开始写代码:

file = r'歌曲路径'
pygame.mixer.init()
print('正在播放',file)
track = pygame.mixer.music.load(file)
pygame.mixer.music.play()
time.sleep(130)
pygame.mixer.music.stop()

效果展示:

多功能播放器

看到这个名字,多功能!!

那么相应的知识点也不能少,下面给大家整理

  1. python基础知识 2. requests库 3. time

4. pygame 5. tkinter 6.线程


环境

windows

pycharm 2021.2

python 3.8


代码展示

导入模块

import os
import time
import tkinter
import tkinter.filedialog
import threading
import pygame   # pip

root = tkinter.Tk()
root.title('音乐播放器')
root.geometry('460x600+500+100')
root.resizable(False,False)  # 不能拉伸

folder =''
res = []
num = 0
now_music = ''

添加文件夹

def buttonChooseClick():

    global folder
    global res
    if not folder:
        folder = tkinter.filedialog.askdirectory()
        musics = [folder + '\\' + music
                  for music in os.listdir(folder) \
\
                  if music.endswith(('.mp3','.wav','.ogg'))]
        ret = []
        for i in musics:
            ret.append(i.split('\\')[1:])
            res.append(i.replace('\\','/'))

        var2 = tkinter.StringVar()
        var2.set(ret)
        lb = tkinter.Listbox(root,listvariable=var2)
        lb.place(x=50,y=100,width=260,height=300)

    if not folder:
        return

    global playing
    playing = True

根据情况禁用和启用相应的按钮

    buttonPlay['state'] = 'normal'
    buttonStop['state'] = 'normal'
    # buttonPause['state'] = 'normal'
    pause_resume.set('播放')

播放音乐

def play():

    if len(res):
        pygame.mixer.init()
        global num
        while playing:
            if not pygame.mixer.music.get_busy():
                netxMusic = res[num]
                print(netxMusic)
                print(num)
                pygame.mixer.music.load(netxMusic.encode())
                # 播放
                pygame.mixer.music.play(1)
                if len(res) -1 == num:
                    num = 0
                else:
                    num = num + 1
                netxMusic = netxMusic.split('\\')[1:]
                musicName.set('playing......' + ''.join(netxMusic))
            else:
                time.sleep(0.1)

点击播放

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)
        t.start()

    elif pause_resume.get() == '暂停':
        # pygame.mixer.init()
        pygame.mixer.music.pause()

        pause_resume.set('继续')

    elif pause_resume.get() == '继续':
        # pygame.mixer.init()
        pygame.mixer.music.unpause()

        pause_resume.set('暂停')

停止播放

def buttonStopClick():

    global playing
    playing = False
    pygame.mixer.music.stop()

下一首

def buttonNextClick():
    global playing
    playing = False
    pygame.mixer.music.stop()
    global num
    if len(res) == num:
        num = 0

    playing = True

创建线程播放音乐,主线程用来接收用户操作

    t = threading.Thread(target=play)
    t.start()

关闭窗口

def closeWindow():

修改变量,结束线程中的循环

    global playing

    playing = False

    time.sleep(0.3)

停止播放,如果已停止,

再次停止时会抛出异常,所以放在异常处理结构中

    try:

        pygame.mixer.music.stop()

        pygame.mixer.quit()

    except:

        pass

    root.destroy()

声音控制

def control_voice(value=0.5):
    pygame.mixer.music.set_volume(float(value))

上一首

def buttonPrevClick():
    global playing

    playing = False

    pygame.mixer.music.stop()
    #
    # pygame.mixer.quit()
    global num
    # num += 1
    # num -= 1
    if num == 0:
        num = len(res) - 2
        # num -= 1
    elif num == len(res) - 1:
        num -= 2
    else:
        num -= 2
        # num -= 1
    print(num)

    playing = True

创建一个线程来播放音乐,当前主线程用来接收用户操作

    t = threading.Thread(target=play)

    t.start()

窗口关闭

root.protocol('WM_DELETE_WINDOW', closeWindow)

效果展示

尾语

好啦,本文章到这里就结束拉

有喜欢的小伙伴记得给博主一个三连哦~

希望你在学习的路上不忘初心,坚持不懈,学有所成

把时间和精力,放在自己擅长的方向,去坚持与努力,

如果不知道自己擅长什么,就尽快找到它。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现在线音乐播放器需要前端和后端的技术。前端技术可以使用HTML、CSS和JavaScript,后端技术可以使用Python。 下面是一个基于Python Flask框架实现的在线音乐播放器的示例代码: ```python from flask import Flask, render_template, url_for, request import os app = Flask(__name__) @app.route("/") def index(): music_list = os.listdir("static/music") return render_template("index.html", music_list=music_list) @app.route("/play", methods=["POST"]) def play(): music_name = request.form["music_name"] return render_template("play.html", music_name=music_name) if __name__ == "__main__": app.run(debug=True) ``` 这是一个简单的后端代码,我们需要在`static/music`文件夹下放置音乐文件,然后通过前端页面来实现在线播放。下面是HTML代码: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>在线音乐播放器</title> </head> <body> <h1>在线音乐播放器</h1> <ul> {% for music in music_list %} <li> <form action="{{ url_for('play') }}" method="post"> <input type="hidden" name="music_name" value="{{ music }}" /> <button type="submit">{{ music }}</button> </form> </li> {% endfor %} </ul> </body> </html> ``` 这是主页的HTML代码,我们通过Python代码中的`music_list = os.listdir("static/music")`获取`static/music`文件夹下的所有音乐文件,然后通过循环展示在页面上。当用户点击某个音乐文件时,会提交一个POST请求到`/play`路由,Python代码中的`play()`函数会接收到这个请求,然后渲染一个新的页面。 下面是播放页面的HTML代码: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>{{ music_name }}</title> </head> <body> <h1>{{ music_name }}</h1> <audio controls src="{{ url_for('static', filename='music/' + music_name) }}"></audio> </body> </html> ``` 这是播放页面的HTML代码,我们通过Python代码中的`music_name = request.form["music_name"]`获取用户选择的音乐文件名称,然后在页面上渲染出音乐名称和播放器。由于音乐文件在`static/music`文件夹下,因此我们使用`url_for('static', filename='music/' + music_name)`来获取音乐文件的URL。 这样,我们就完成了一个简单的在线音乐播放器实现。当用户访问`http://127.0.0.1:5000/`时,会展示出音乐列表,用户选择某个音乐文件后,会跳转到播放页面,自动播放该音乐文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值