贴一下代码。
详见:
学习如何用 Python 创建 MP3 音乐播放器
https://data-flair.training/blogs/python-mp3-player/
下载项目:
https://data-flair.s3.ap-south-1.amazonaws.com/python-projects/music-player-python-code.zip
截图:
使用时替换file_path后的路径,歌曲实际目录没有限制,先左上角选择添加歌曲,功能有“播放、暂停、停止、继续、前一首、后一首”。选中一首歌才能前后切换。
#importing libraries
from pygame import mixer
from tkinter import *
import tkinter.font as font
from tkinter import filedialog
file_path = 'C:/Users/example/music/'
#add many songs to the playlist
def addsongs():
#a list of songs is returned
temp_song=filedialog.askopenfilenames(initialdir="Music/",title="Choose a song", filetypes=(("mp3 Files","*.mp3"),))
#loop through everyitem in the list
for s in temp_song:
s=s.replace(file_path,"")
songs_list.insert(END,s)
def deletesong():
curr_song=songs_list.curselection()
songs_list.delete(curr_song[0])
def Play():
song=songs_list.get(ACTIVE)
song=f'{song}'
mixer.music.load(song)
mixer.music.play()
#to pause the song
def Pause():
mixer.music.pause()
#to stop the song
def Stop():
mixer.music.stop()
songs_list.selection_clear(ACTIVE)
#to resume the song
def Resume():
mixer.music.unpause()
#Function to navigate from the current song
def Previous():
#to get the selected song index
previous_one=songs_list.curselection()
#to get the previous song index
previous_one=previous_one[0]-1
#to get the previous song
temp2=songs_list.get(previous_one)
#temp2=f''+file_path+'{temp2}'
mixer.music.load(temp2)
mixer.music.play()
songs_list.selection_clear(0,END)
#activate new song
songs_list.activate(previous_one)
#set the next song
songs_list.selection_set(previous_one)
def Next():
#to get the selected song index
next_one=songs_list.curselection()
#to get the next song index
next_one=next_one[0]+1
#to get the next song
temp=songs_list.get(next_one)
#temp=f''+file_path+'{temp}'
mixer.music.load(temp)
mixer.music.play()
songs_list.selection_clear(0,END)
#activate newsong
songs_list.activate(next_one)
#set the next song
songs_list.selection_set(next_one)
#creating the root window
root=Tk()
root.title('DataFlair Music player App ')
#initialize mixer
mixer.init()
#create the listbox to contain songs
songs_list=Listbox(root,selectmode=SINGLE,bg="black",fg="white",font=('arial',15),height=12,width=47,selectbackground="gray",selectforeground="black")
songs_list.grid(columnspan=9)
#font is defined which is to be used for the button font
defined_font = font.Font(family='Helvetica')
#play button
play_button=Button(root,text="Play",width =7,command=Play)
play_button['font']=defined_font
play_button.grid(row=1,column=0)
#pause button
pause_button=Button(root,text="Pause",width =7,command=Pause)
pause_button['font']=defined_font
pause_button.grid(row=1,column=1)
#stop button
stop_button=Button(root,text="Stop",width =7,command=Stop)
stop_button['font']=defined_font
stop_button.grid(row=1,column=2)
#resume button
Resume_button=Button(root,text="Resume",width =7,command=Resume)
Resume_button['font']=defined_font
Resume_button.grid(row=1,column=3)
#previous button
previous_button=Button(root,text="Prev",width =7,command=Previous)
previous_button['font']=defined_font
previous_button.grid(row=1,column=4)
#nextbutton
next_button=Button(root,text="Next",width =7,command=Next)
next_button['font']=defined_font
next_button.grid(row=1,column=5)
#menu
my_menu=Menu(root)
root.config(menu=my_menu)
add_song_menu=Menu(my_menu)
my_menu.add_cascade(label="Menu",menu=add_song_menu)
add_song_menu.add_command(label="Add songs",command=addsongs)
add_song_menu.add_command(label="Delete song",command=deletesong)
mainloop()