今天使用python的pygame等模塊制作了一個簡單的音樂播放器,實現(xiàn)了很多好玩的功能,在這里和大家一起分享!這是筆者的第二篇博客,也是正式的完成一個小項目,希望獲得大家的支持~
播放器可以實現(xiàn)的功能:
暫停、繼續(xù)播放、調(diào)整聲音大小、上一曲&下一曲調(diào)整、無限制追加音樂(但需要下載音樂文件到本地)、直接根據(jù)曲庫展示的歌曲序號進行點歌
項目python代碼:
from time import sleep # 這里可以不用,sleep表示先不執(zhí)行代碼段的時間
import pygame
import os
#導(dǎo)入pygame模塊
import time
#導(dǎo)入時間模塊
pygame.mixer.init()
#初始化音頻部分
def musiclujing():
#將曲目的路徑存放在列表中
path = []
name = []
musicfolderpath = r"../happy_birthday/資源/music" #文件夾目錄
files= os.listdir(musicfolderpath) #得到文件夾下的所有文件名稱
for file in files: #遍歷文件夾
if not os.path.isdir(file): #判斷是否是文件夾,不是文件夾才打開
temppath = musicfolderpath + "/" + file
path.append(temppath)
name.append(file)
return path,name
def welcome():
print('''
************************************************
* 歡迎來到微笑的蘿卜出品的專屬音樂播放器 *
* lly出品,必屬精品 *
************************************************
''')
sleep(3)
pygame.mixer.music.load(musicpath[0]) #載入待播放的音樂文件,需要提前下載到本地文件
pygame.mixer.music.play(loops=2) #開始播放音樂流,默認無操作下循環(huán)次數(shù)為2次
pygame.mixer.music.set_volume(0.3)
def musicselect(path, name):
i = 0
j = 0.3
while 1:
print('''
************************************************
* 從鍵盤上鍵入以下字符可以執(zhí)行對應(yīng)命令,大小寫均可: *
A/a:暫停 Q/q:播放
S/s:下一曲 W/w:上一曲
E/e:增大音量 D/d:減少音量
空格:退出程序
* 直接輸入數(shù)字: 直接播放對應(yīng)序號的歌曲 *
------------------------------------------------
''')
print(" 曲庫的歌曲列表為:")
for r in range(len(name)):
print(" ",end = "")
print(str(r) + ":" + name[r])
print(" ************************************************")
print("當(dāng)前正在播放的是:",name[i])
n = input('請輸入下一步操作哦:')
if n == "q" or n == "Q":
print('繼續(xù)播放音樂')
#使用文件名作為參數(shù)載入音樂 ,音樂可以是ogg、mp3等格式。載入的音樂不會全部放到內(nèi)容中,而是以流的形式播放的,即在播放的時候才會一點點從文件中讀取。
#播放載入的音樂。該函數(shù)立即返回,音樂播放在后臺進行。
pygame.mixer.music.unpause()
elif n == "a" or n == "A":
#暫停播放
pygame.mixer.music.pause()
elif n == "s" or n == "S":
i += 1
pygame.mixer.music.load(path[i])
pygame.mixer.music.set_endevent(pygame.constants.USEREVENT) # 音樂結(jié)束事件:可供大家繼續(xù)編輯,本文中沒有用到哦
pygame.mixer.music.play(loops=2)
elif n == "w" or n == "W":
i -= 1
pygame.mixer.music.load(path[i])
pygame.mixer.music.set_endevent(pygame.constants.USEREVENT) # 音樂結(jié)束事件
pygame.mixer.music.play(loops = 2)
elif n == "e" or n == "E":
j += 0.1
pygame.mixer.music.set_volume(j)
elif n == "d" or n == "D":
j -= 0.1
pygame.mixer.music.set_volume(j)
elif n == " ":
print("程序結(jié)束!")
return 1
else:
try:
n = int(n)
i = n
pygame.mixer.music.load(path[i])
pygame.mixer.music.set_endevent(pygame.constants.USEREVENT) # 音樂結(jié)束事件
pygame.mixer.music.play(loops=2)
except:
print("輸入的指令無效,請重新輸入!若要退出,請輸入空格后確定")
continue
# -------- 主循環(huán) -----------
#設(shè)置這里以保證如果音樂播放完畢,則自動播放下一首音樂
musicpath, musicname = musiclujing()
welcome()
musicselect(musicpath, musicname)
注釋:
# pygame.mixer.music.set_endevent 這一語句本文中并無實際意義,目的是想為那些在此音樂播放器上繼續(xù)改進的同學(xué)提供參考的使用位置,可忽略不寫~
項目運行效果截圖:
筆者把此項目單獨打包成了exe(用了pyinstaller庫~),執(zhí)行效果如下:
文章來源:http://www.zghlxwxcb.cn/news/detail-511213.html
大功告成!文章來源地址http://www.zghlxwxcb.cn/news/detail-511213.html
到了這里,關(guān)于完整實例項目:使用python自制音樂播放器~的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!