python实现mp3播放器
  LeEJFEmgyGb2 2023年12月01日 17 0

1.导库

import tkinter as tk
from tkinter import *
from pygame import mixer
import os #os模块是自带的,另外的两个都需要安装

2.设计界面

root = tk.Tk()
root.title('不讲武德音乐播放器')
root.geometry('440x570+200+200')####
root.iconbitmap('./mbg.ico')
root['background'] = '#6175d6'
img = tk.PhotoImage(file='./马大师.gif')
tk.Label(root, image=img, bg='#6175d6').pack()
frame_0 = tk.Frame(bg='#6175d6')
frame_0.pack(pady=10)
songname_label=Label(frame_0,textvariable=songname_txt,font=('黑体', 15),fg='#f6f5f3', bg='#000000').pack(side=tk.LEFT)
frame_1 = tk.Frame(bg='#6175d6')
frame_1.pack(pady=10)
tk.Button(frame_1, text='上一首', font=('黑体', 15), fg='#f6f5f3', bg='#6175d6', relief='flat',command=last).pack(side=tk.LEFT)
tk.Button(frame_1, text='播放', font=('黑体', 15), fg='#f6f5f3', bg='#6175d6', relief='flat',command=play).pack(side=tk.LEFT, padx=40)
tk.Button(frame_1, text='下一首', font=('黑体', 15), fg='#f6f5f3', bg='#6175d6', relief='flat', command=next).pack(side=tk.LEFT)
frame_2 = tk.Frame(bg='#6175d6')
frame_2.pack(pady=10)
tk.Button(frame_2, text='音量↑', font=('黑体', 15), fg='#f6f5f3', bg='#6175d6', relief='flat',command=soundsize_up ).pack(side=tk.LEFT)
tk.Button(frame_2, text='暂停', font=('黑体', 15), fg='#f6f5f3', bg='#6175d6', relief='flat',command=stop).pack( side=tk.LEFT, padx=20)
tk.Button(frame_2, text='继续', font=('黑体', 15), fg='#f6f5f3', bg='#6175d6', relief='flat',command=cancel).pack( side=tk.LEFT, padx=20)
tk.Button(frame_2, text='音量↓', font=('黑体', 15), fg='#f6f5f3', bg='#6175d6', relief='flat',command=soundsize_down).pack(side=tk.LEFT)
root.mainloop()

3.定义读取文件夹音乐列表函数,获取音乐文件列表。

def music_list():
    lists = []
    for i in os.listdir('music'):
        if os.path.splitext(i)[-1] == '.mp3':
            lists.append(i)
        else:
            pass
    return lists

4.定义当前音乐函数

def name_now():  # 当前播放音乐名称
    name = music_list()[num]
    song_name = name.split(' - ')[-1][:-4]
    singer = name.split(' - ')[0]
    songname_txt.set(name)
    return name, song_name, singer

5.定义播放音乐函数

def play():
    global song_name
    mixer.init()
    size = 0.5
    name, song_name, singer = name_now()
    songname_txt.set(name)
    mixer.music.set_volume(size)
    mixer.music.load(f'music/{name}')
    mixer.music.play()

6.定义暂停音乐函数

def stop():
    mixer.music.pause()

7.定义继续播放音乐函数

def cancel():
    mixer.music.unpause()

8.定义上一首音乐函数

def last():
    global num,name1
    mixer.init()
    mixer.music.stop()
    if 0 <= num <= len(music_list()) - 2:
        num += 1
    elif num >= len(music_list()) - 1:
        num = 0
    name1, song_name, singer = name_now()
    print(name1, song_name, singer)


    play()

9.定义下一首音乐函数

def next():
    global num,name1
    mixer.init()
    mixer.music.stop()
    if 0 < num <= len(music_list()) - 1:
        num -= 1
    elif num <= 0:
        num = len(music_list()) - 1
    name1, song_name, singer = name_now()
    #song_name_va.set(f'{song_name}')
    #singer_va.set(f'{singer}')
    play()  # place(x=20, y=550)

10.定义音量调大函数

def soundsize_up():
    global size
    if -0.1 < size < 1:
        size += 0.1
        # print(size)  # 验证音量
        mixer.music.set_volume(size)
    else:
        size += 0
        # print(size)
        mixer.music.set_volume(size)

11.定义音量调小函数

def soundsize_down():
    global size
    if 0 < size < 1.1:
        size -= 0.1
        # print(size)
        mixer.music.set_volume(size)
    else:
        size -= 0
        # print(size)
        mixer.music.set_volume(size)

操作演示视频:

,时长01:54

拓展:感兴趣的朋友们可以自己继续丰富软件功能和考虑做界面。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月01日 0

暂无评论

推荐阅读
  anLrwkgbyYZS   2023年12月30日   14   0   0 ideciciMaxideMax
LeEJFEmgyGb2