tkinter 简单音乐播放器

 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()
    # 还希望加上顺序播放,单曲循环 ,随机播放
    # 总之,这是个简单的练手作品

 图片和音乐放到对应文件夹中

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

将来怎么办

你的鼓励是我的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值