最近刷到马大师的视频和音乐,觉得现在的年轻人真会玩。今天我们就写一个不讲武德音乐播放器。年轻人不讲武德,耗子尾汁,我大意了没有闪。先祭出大师的五连鞭,作为播放器的顶图。


我们主要做的是从文件夹读取MP3文件,用tkinter做软件界面。主要功能有播放、上一首、下一首、音量调大调小、暂停、继续。
直接上代码。
1.导库
import tkinter as tkfrom tkinter import *from pygame import mixerimport 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:passreturn 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_namemixer.init()size = 0.5name, 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,name1mixer.init()mixer.music.stop()if 0 <= num <= len(music_list()) - 2:num += 1elif num >= len(music_list()) - 1:num = 0name1, song_name, singer = name_now()print(name1, song_name, singer)play()
9.定义下一首音乐函数
def next():global num,name1mixer.init()mixer.music.stop()if 0 < num <= len(music_list()) - 1:num -= 1elif num <= 0:num = len(music_list()) - 1name1, 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 sizeif -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 sizeif 0 < size < 1.1:size -= 0.1# print(size)mixer.music.set_volume(size)else:size -= 0# print(size)mixer.music.set_volume(size)
操作演示视频:
拓展:感兴趣的朋友们可以自己继续丰富软件功能和考虑做界面。
看完案例的小伙伴们点个在看,顺便扫码帮忙关注一下呗,你的支持是我继续推新案例的动力。
