最近刷到马大师的视频和音乐,觉得现在的年轻人真会玩。今天我们就写一个不讲武德音乐播放器。年轻人不讲武德,耗子尾汁,我大意了没有闪。先祭出大师的五连鞭,作为播放器的顶图。
我们主要做的是从文件夹读取MP3文件,用tkinter做软件界面。主要功能有播放、上一首、下一首、音量调大调小、暂停、继续。
直接上代码。
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)
操作演示视频:
拓展:感兴趣的朋友们可以自己继续丰富软件功能和考虑做界面。
看完案例的小伙伴们点个在看,顺便扫码帮忙关注一下呗,你的支持是我继续推新案例的动力。