資源簡(jiǎn)介
python音樂(lè)播放器,絕對(duì)原創(chuàng),可以顯示動(dòng)態(tài)歌詞,可以作為python作業(yè)
代碼片段和文件信息
import?os
import?time
from?tkinter?import?scrolledtext?
from?tkinter?import?filedialog
from?tkinter?import?*
import?os.path
import?pygame
import?tkinter.messagebox
wd=Tk()
wd.title(“我的音樂(lè)播放器“)
wd.geometry(“600x600“)
scr=scrolledtext.ScrolledText(wdwidth=40height=30)?????
scr.place(x=300y=0)
def?dongtaifeci(pathq):
????global?dictLrc
????dictLrc?=?{}???#創(chuàng)建字典類(lèi)型,全局變量
????#打印歌詞,按照時(shí)間順序,
????def?lrcTime(lrc):
????????dictLrc?=?lrc???????#將形參賦值給實(shí)參
????????listLrc?=?sorted(dictLrc)??#將字典的key值(時(shí)間)按大小排序
????????timeLen?=?len(listLrc)#讀取出列表數(shù)量,即打印時(shí)循環(huán)多少次
????????timeFree?=?0?#定義暫停時(shí)間
????????count?=?0?
????????for?i?in?listLrc:??#循環(huán)列表中的值,也就是字典中的key,
????????????timeFree?=?i?-count??#得出暫停時(shí)間?
????????????time.sleep(timeFree)?#暫停
????????????#print(dictLrc[i])?#打印出歌詞
????????????#scr.delete(1.0?END)#先清空舊歌詞
????????????scr.insert(ENDdictLrc[i]+‘\n‘)#再加入新歌詞
????????????wd.update()
????????????count?=?i???#將上一個(gè)時(shí)間賦值給count,下一次循環(huán)繼續(xù)使用
????#將時(shí)間轉(zhuǎn)換為秒
????def?revertTime(time):#傳入的為字符串格式的
????????time1?=?time
????????timeList?=?time1.split(“:“)#以:將時(shí)間拆分為分?和?秒
????????return??round(float(timeList[0])?*?60?+?float(timeList[1])2)?#返回時(shí)間為秒,保留兩位小數(shù)
????#從文件家中讀取歌詞
????def?getLrc(path):
????????rf?=?open(path“r“errors?=?“ignore“)
????????getlrc?=?rf.read()
????????rf.close()
????????return?getlrc??#返回為字符串
????#拆分應(yīng)該轉(zhuǎn)換成字典類(lèi)型,以時(shí)間為key,歌詞為value
????def?splitStr(getstr):#接收的為字符串
????????global??dictLrc???#創(chuàng)建字典類(lèi)型
????????getStr?=?getstr
????????count?=?0??#獲取該單詞需要輸出幾次
????????for?i?in?getStr:???#以][??]??[??進(jìn)行拆分
????????????if?i?==“[“:
????????????????count?+=1?
????????#注意替換順序不能變,先替換“][“在替換單個(gè)的,否則可能出現(xiàn)兩個(gè)**???
????????getStr?=?getStr.replace(“][““*“)
????????getStr?=?getStr.replace(“[““*“)
????????getStr?=?getStr.replace(“]““*“)
????????lineLrc?=?getStr.split(“*“)
????????for?i?in?range(1count+1):??????????#循環(huán)多次,得到多個(gè)key值
????????????#將時(shí)間轉(zhuǎn)換成秒的格式
????????????LrcTimes?=?revertTime(lineLrc[i])?#調(diào)用轉(zhuǎn)換時(shí)間的函數(shù),此時(shí)key為秒
????????????dictLrc[LrcTimes]?=?lineLrc[-1]????#將列表最后一個(gè)歌詞復(fù)制給字典key
????#打印歌詞函數(shù)
????def?printLrc(lrc):
????????lrc1?=?lrc
????????for?i?in?lrc1:???#?i?為字符串歌詞
????????????splitStr(i)??#調(diào)用拆分函數(shù)
????lrc?=?getLrc(pathq)#字符串類(lèi)型
????listLrc?=?lrc.split(“\n“)#以換行符將字符串拆分成列表
????printLrc(listLrc)
????lrcTime(dictLrc)
###################模塊開(kāi)始###################################
#聲明變量部分#聲明變量部分#聲明變量部分#聲明變量部分#聲明變量部分
#歌曲名字??????變量
varlabelmusicname=StringVar()
varlabelmusicname.set(“歌曲名字“)
#音量大小數(shù)字??變量
varlabelVoice=StringVar()
varlabelVoice.set(“音量大小?0.0“)
#聲明變量部分#聲明變量部分#聲明變量部分#聲明變量部分#聲明變量部分
###################模塊結(jié)束###################################
#其他函數(shù)#其他函數(shù)#其他函數(shù)#其他函數(shù)#其他函數(shù)#其他函數(shù)#其他函數(shù)
#找到MP3?返回一個(gè)列表
def?find(pathx=[]s=‘.mp3‘):
????wd.update()
????if?not?os.path.isdir(path):
????????return??
????for?i?in?os.listdir(path):
????????file=os.path.join(pathi)
????????
????????if?os.path.isdir(file):
????????????find(files)
????????????
????????elif?str(os.path.splitext(file)[1])==s
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件??????11102??2018-11-22?22:31??歌詞滾動(dòng)\newMusicPlay.py
?????文件???????1630??2018-11-22?22:05??歌詞滾動(dòng)\測(cè)試歌曲\Five?Hundred?Miles.lrc
?????文件????8285730??2018-11-21?22:05??歌詞滾動(dòng)\測(cè)試歌曲\Five?Hundred?Miles.mp3
?????文件????????664??2018-11-22?21:29??歌詞滾動(dòng)\測(cè)試歌曲\張瑤?-?遇見(jiàn).lrc
?????文件????2426631??2017-11-14?08:32??歌詞滾動(dòng)\測(cè)試歌曲\張瑤?-?遇見(jiàn).mp3
?????文件???????1643??2018-11-22?22:07??歌詞滾動(dòng)\測(cè)試歌曲\魏晨-瘋?cè)嗽?lrc
?????文件????2217844??2018-03-16?19:38??歌詞滾動(dòng)\測(cè)試歌曲\魏晨-瘋?cè)嗽?mp3
?????目錄??????????0??2019-01-06?15:52??歌詞滾動(dòng)\測(cè)試歌曲
?????目錄??????????0??2019-01-06?15:52??歌詞滾動(dòng)
-----------?---------??----------?-----??----
?????????????12945244????????????????????9
評(píng)論
共有 條評(píng)論