用Python实现简易音乐播放器(mp3类型)2

实现方法改编自“嘟嘟还没长大”。

一、播放器功能

         实现功能:具有播放器画面,有八个按钮实现功能,画面、按钮插入自制背景,并具有调整画面透明度的功能。

        未实现功能:时间显示不能实现动态显示,没有显示歌曲歌词等信息。

 二、实现代码

import os
import random
from pygame import mixer
import time
import tkinter as tk
from tkinter import Button  #按钮控件;在程序中显示按钮
from tkinter import Label   #标签控件;可以显示文本和位图
from tkinter import Entry   #输入控件;用于显示简单的文本内容
from tkinter import Scale   #范围控件;显示一个数值刻度,为输出限定范围的数字区间
from tkinter import PhotoImage  #用于插入图片
from tkinter import messagebox   #用于显示你应用程序的消息框
from tkinter import Toplevel   #容器控件;用来提供一个单独的对话框,和Frame比较类似
from tkinter import StringVar
from PIL import ImageTk  #图像处理库


def name():   #检索文件夹下所有mp3文件名称
    filename = os.listdir(r"F:\python\project\assignment\music") #利用os.listdir检索文件夹下所有文件名称
    # print(filename)
    global music
    music = []
    for music_name in filename:
        if '.mp3' in music_name:
            music.append(music_name)  #检索出mp3文件名字
    return music

###音乐加载、播放、暂停、声音大小等操作
def music_begin(i):
    mixer.init()
    mixer.music.load(music[int(i)])

def music_random():
    global j,i
    i = random.randint(1, len(music))
    j = i
    music_begin(i)
    mixer.music.play()

def music_stop():
    mixer.music.stop()
    mixer.music.unload()

def music_next():
    global j,l
    j += 1
    l = j
    music_begin(j)
    mixer.music.play()

def music_last():
    global l
    l -= 1
    music_begin(l)
    mixer.music.play()


def music_louder():
    global loud
    loud += 0.1
    mixer.music.set_volume(loud)
    return loud

def music_lower():
    global loud
    loud -= 0.1
    mixer.music.set_volume(loud)
    return loud

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

def music_unpause():
    mixer.music.unpause()
###以上函数实现对音乐的操作,编程需注意全局变量在每一个函数里面都应该glabal声明

###编辑播放器画面函数
def background():   #编辑画面背景

    top = tk.Tk()
    # top.geometry()  #设置窗口的初始大小
    top.title("音乐播放器")

    v1 = StringVar()  #用tk.StringVar会报错,需要将tkinter中的StringVar调出
    def printsrceen(texts):  #调画面透明度函数
        t = int(texts)
        top.attributes("-alpha", t / 100)

    def update_time():    #获取当前时间函数
        current = time.strftime("%H:%M:%S")
        tk.Label(top, text="{0}".format(current), font=("Helvetica", 15)).place(x=20, y=30)

    #添加背景图片
    photo = ImageTk.PhotoImage(file="背景.png")
    Label = tk.Label(top, text='人生不止有酒,还有诗和远方。',justify=tk.LEFT,image=photo,compound=tk.CENTER,
                     font=("华文行楷",50),fg="white")
    Label.pack() #默认字在中间

    # 设置时间显示
    update_time()

    #添加按钮功能,美化按钮
    photo1 = ImageTk.PhotoImage(file="按钮背景.jpg")
    Button(top, text="暂停", command=music_pause,width=91,height=51,image=photo1,compound=tk.CENTER,
           font=("宋体",15),fg="black").place(x=180, y=130)
    Button(top, text="随机播放", command=music_random,width=91,height=51,image=photo1,compound=tk.CENTER,
           font=("宋体",15),fg="black").place(x=180, y=50)
    Button(top, text="下一首", command=music_next,width=91,height=51,image=photo1,compound=tk.CENTER,
           font=("宋体",15),fg="black").place(x=300, y=130)
    Button(top, text="上一首", command=music_last,width=91,height=51,image=photo1,compound=tk.CENTER,
           font=("宋体",15),fg="black").place(x=300, y=50)
    Button(top, text="继续", command=music_unpause,width=91,height=51,image=photo1,compound=tk.CENTER,
           font=("宋体",15),fg="black").place(x=180, y=210)
    Button(top, text="停止", command=music_stop,width=91,height=51,image=photo1,compound=tk.CENTER,
           font=("宋体",15),fg="black").place(x=180, y=290)
    Button(top, text="音量增", command=music_louder,width=91,height=51,image=photo1,compound=tk.CENTER,
           font=("宋体",15),fg="black").place(x=300, y=210)
    Button(top, text="音量减", command=music_lower,width=91,height=51,image=photo1,compound=tk.CENTER,
           font=("宋体",15),fg="black").place(x=300, y=290)
    #按钮内容编辑函数和Label设置函数内容一致

    #设置透明度条
    w2 = Scale(top, from_=30, to=100, orient="horizontal", width=20,length=300, variable=v1,
               command=printsrceen, label="透明度")
    w2.place(x=550,y=700)


    tk.mainloop()

music = name()
i = j = l = 1
loud = 0.5
background()



  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值