MusicPlayer 2.0版本
python小制作 tkinter 简单音乐播放器_死非死的博客-CSDN博客
import os
from tkinter import *
from PIL import Image, ImageTk # 导入图像处理函数库
from pygame import mixer
def music_list(): # 读取音乐 完善方向是加上排序功能
lists = [] # music是音乐文件夹 os.listdir 打开指定文件夹获取文件夹下所有文件名称
for i in os.listdir('music'):
if os.path.splitext(i)[-1] == '.mp3':
lists.append(i)
else:
pass
return lists
def name_now(): # 当前播放音乐名称
name1 = music_list()[num]
return name1
def play(): # 开始播放音乐
mixer.music.set_volume(size)
mixer.music.load(f'music/{name_now()}')
mixer.music.play()
def stop(): # 音乐暂停
mixer.music.pause()
def cancel(): # 取消暂停
mixer.music.unpause()
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)
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)
def next(): # 切换音乐 上一首
global num
mixer.music.stop()
if 0 <= num <= len(music_list()) - 2:
num += 1
elif num >= len(music_list()) - 1:
num = 0
name.set(f'{name_now()}')
play()
def last(): # 切换音乐 下一首
global num
mixer.music.stop()
if 0 < num <= len(music_list()) - 1:
num -= 1
elif num <= 0:
num = len(music_list()) - 1
name.set(f'{name_now()}')
play() # place(x=20, y=550)
def buttons(): # 按钮总部 多数参数是重复的 ,所可以考虑 新建类 用类的实例化 ,减少代码量
play_b = Button(window1, text='播放',
font=font1, command=play,
width=8,
bg='SkyBlue').place(x=20, y=550)
stop_b = Button(window1, text='暂停',
font=font1,
width=8,
command=stop,
bg='SkyBlue').place(x=100, y=550)
unstop_b = Button(window1, text='继续播放',
font=font1,
width=8,
command=cancel,
bg='SkyBlue').place(x=180, y=550)
last_b = Button(window1, text='上一首',
font=font1,
width=8,
command=last,
bg='SkyBlue').place(x=260, y=550)
next_b = Button(window1, text='下一首',
font=font1,
width=8,
command=next,
bg='SkyBlue').place(x=340, y=550)
size_b = Button(window1, text='音量+',
font=font1,
width=8,
command=soundsize_up,
bg='SkyBlue').place(x=420, y=550)
size_b = Button(window1, text='音量-',
font=font1,
width=8,
command=soundsize_down,
bg='SkyBlue').place(x=500, y=550)
def player():
# print(music_list())
global name
name = StringVar()
name.set(f'{name_now()}')
img_1 = ImageTk.PhotoImage(Image.open(f'壁纸/图层 1.png').resize((600, 600)))
tpi1 = Label(window1, compound=CENTER, # 用于显示当前音乐名称
textvariable=name,
image=img_1,
fg='blue',
font=('宋体', 20))
tpi1.image = img_1 # 背景图片 在这里我将背景图片和音乐名称共用一个标签 因为没找到将标签背景透明的办法
tpi1.pack() # 放置标签
buttons() # 调用上方函数 ,放置按钮
if __name__ == "__main__":
mixer.init()
window_w = '600' # 窗口宽
window_h = '600' # 窗口高
window_s = window_w + 'x' + window_h
window_p = "+500+150" # 窗口出现的位置
window1 = Tk() # 创建一个窗口
window1.resizable(width=False, height=False) # 设定窗口是否可以缩放,以及缩放范围
window1.title('赵某的音乐播放器') # 标题
window1.geometry(window_s + window_p) # 窗口的大小 以及位置 放置窗口
font1 = ('宋体', 12)
global img_png, order
order = 0
num = 0
size = 0.5
# 上面这么多变量好像有点但不太好欸
player()
window1.mainloop()
# 还希望加上顺序播放,单曲循环 ,随机播放
# 总之,这是个简单的练手作品
图片和音乐放到对应文件夹中