用python制作简易的音乐播放器(GUI界面制作+OS文件操作+面向对象+多线程)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/jjsjsjjdj/article/details/102761779
#---------------------------------------------------------------------------------------------
import tkinter as tk
from tkinter import *
import tkinter.filedialog
import pygame
import os
from threading import *
import threading
import time
from PIL import ImageTk, Image

#----------------------一、音乐文本读取--------------------
filePath = 'G:\\3.Google网页下载文件存放处\音乐\歌曲\周杰伦\\'
SongName=os.listdir(filePath)   
SongPath =[filePath+i for i in SongName]

Number=0
volume=0.3

Switch=True

#----------------------二、功能区--------------------------------------


def fun1( ):
    global Number
    
    Number=Number+1
    if Number>len(SongPath)-1:
        Number=0
    pygame.mixer.music.load(SongPath[Number])  
    pygame.mixer.music.play(-1)
    
    entry_var.set(SongName[Number])
    pass


def fun2():
    global Number
    global Switch
    pygame.mixer.music.set_volume(volume)  
    if Switch==True:
        pygame.mixer.music.unpause() 
        Switch=False
    else:
        pygame.mixer.music.pause()
        Switch=True
            
    pass

def fun3():
    global Number
    Number=Number-1
    if Number<0:
        Number=len(SongPath)-1
    pygame.mixer.music.load(SongPath[Number])  
    pygame.mixer.music.play(-1)
    
    entry_var.set(SongName[Number])
    pass


def fun4():
    global volume
    volume+=0.1
    if volume>1:
        volume=1
    pygame.mixer.music.set_volume(volume)
    
 
def fun5():
    global volume
    volume-=0.1
    if volume<0:
        volume=0
    pygame.mixer.music.set_volume(volume) 


    
#------------------计时器的制作--------------------------    

def os(time) :
    if time<10:
        return "0"+str(time)
    else:
        return str(time)



def clock(seconds):
    if seconds>=60:
        minutes=seconds//60
        seconds=seconds-minutes*60
        return os(minutes)+":"+os(seconds)
    else:
        return "00:"+os(seconds)  
#--------------------------------------------------------

     
class Current_time(threading.Thread):
    
    def __init__(self):
        threading.Thread.__init__(self)
        pass
    

    def clock(seconds):
        if seconds>=60:
            minutes=seconds//60
            seconds=seconds-minutes*60
            return os(minutes)+":"+os(seconds)
        else:
            return "00:"+os(seconds)    

    
    def run(self):
        while 1:
            playtime=pygame.mixer.music.get_pos()
            seconds=int(playtime)//1000

            current_time=clock(seconds)
            entry_var1.set(current_time)
            time.sleep(1)
     
#-----------------------三、面板区-----------------------------------------    





#---------------一、窗口---------------------
root=tk.Tk()        
root.title('音乐播放器')
root["height"]=150   
root["width"]=300    
root.resizable(0,0)

#1.文本框
lal=tk.Label(root,text="欢迎使用音乐播放器")      #在root中创建标签
lal.place(x=50,y=15,width=200,height=50)  #向root放置标签


#---------------二、显示正在播放的歌曲--------------------------

entry_var = tk.StringVar()
entry_var.set('欢迎使用')
en1=tk.Entry(root,textvariable=entry_var,justify=CENTER,state=NORMAL)                       
en1.place(x=50,y=70,width=200,height=15) 

entry_var1 = tk.StringVar()
entry_var1.set('00:00')
en2=tk.Entry(root,textvariable=entry_var1,justify=CENTER)                       
en2.place(x=10,y=5,width=80,height=15) 


#---------------三、音量调节----------------------------

b3=tk.Button(root,text="+",command=fun4)
b3.place(x=50,y=90)

b3=tk.Button(root,text="-",command=fun5)
b3.place(x=65,y=90)



#---------------四、切换歌曲|暂停播放----------------------------------
#1.上一曲按钮
b1=tk.Button(root,text="上一曲",command=fun1)
b1.place(x=80,y=90)


#2.播放按钮
b1=tk.Button(root,text="播放|暂停",command=fun2)  #定义:按钮名称+按钮功能
b1.place(x=130,y=90)          #定义:按钮大小+按钮位置

#3.下一曲按钮
b3=tk.Button(root,text="下一曲",command=fun3)
b3.place(x=195,y=90)

pygame.mixer.init()
t=Current_time()
t.start()




root.mainloop()



猜你喜欢

转载自blog.csdn.net/jjsjsjjdj/article/details/102761779