python3音樂(lè)播放器簡(jiǎn)單實(shí)現(xiàn)代碼
本文實(shí)例為大家分享了python3音樂(lè)播放器的關(guān)鍵代碼,供大家參考,具體內(nèi)容如下
from tkinter import * from traceback import * from win32com.client import Dispatch import time,eyed3,threading name = [] def openfile(index = [1]): global total,name filenames = filedialog.askopenfilenames(title = "音樂(lè)播放器",filetypes =[("mp3文件","*.mp3"),("WMA文件","*.wma"),("WAV文件","*.wav")]) if filenames: for i in range(len(filenames)): media = wmp.newMedia(filenames[i]) wmp.currentPlaylist.appendItem(media) print(filenames[i]) coco = eyed3.load(filenames[i])#eyed3模塊讀取mp3信息 total = int(coco.info.time_secs) minute = int(coco.info.time_secs)//60 sec = int(coco.info.time_secs)%60 length = int(coco.info.time_secs) name = filenames[i].split("/") i =index[-1] list_name.insert(END,str(i)+"."+name[-1]) list_name.insert(END," "*6) if sec >=10: list_name.insert(END,"0%d:%d" %(minute,sec)+ "\n") else: list_name.insert(END,"0%s:0%d" %(minute,sec)+ "\n") i = i +1 index.append(i) def play(event = None): #root.title("%s" % name[-1]),使用wmp.currentMedia.name更好,在per函數(shù)中 per_thread = threading.Thread(target = per) per_thread.daemnon = True wmp.controls.play() per_thread.start() #print(wmp.currentMedia.duration)#放到暫停那里居然可以用,而這里不行 def per(): global total while wmp.playState !=1: progress_scal.set(int(wmp.controls.currentPosition)) progress_scal.config(label = wmp.controls.currentPositionString) progress_scal.config(to = total,tickinterval = 50) time.sleep(1) root.title("%s" % wmp.currentMedia.name) def stop(): wmp.controls.stop() def pause(event = None): wmp.controls.pause() def uselist(): pass def fullscr(): pass def exitit(): root.destroy() def Previous_it(): wmp.controls.previous() def Next_it(): wmp.controls.next() def Volume_ctr(none): wmp.settings.Volume = vio_scale.get() def Volume_add(i=[0]): wmp.settings.Volume =wmp.settings.Volume+5 i.append(wmp.settings.Volume) vio_scale.set(wmp.settings.Volume) def Volume_minus(i=[0]): wmp.settings.Volume = wmp.settings.Volume -5 i.append(wmp.settings.Volume) vio_scale.set(wmp.settings.Volume) def Scale_ctr(none): wmp.controls.currentPosition = var_scale.get() print(wmp.currentMedia.duration) def Clear_list(): wmp.currentPlaylist.clear() list_name.delete(1.0,END) name = [] index = [] def List_random(): wmp.settings.setMode("shuffle",True) play() def List_loop(): wmp.settings.setMode("loop",True) play() root =Tk() wmp = Dispatch("WMPlayer.OCX") canvas = Canvas(root,width =150,height = 100,bg = "blue") filename = PhotoImage(file = "girl.gif") image =canvas.create_image((0,0),image = filename) canvas.place(x=0,y=0) canvas.coords(image,79,50) canvas.grid(row =0,column = 0,sticky = "nw",rowspan =2) progress_lab = LabelFrame(root,text = "播放進(jìn)度") progress_lab.grid(row =2,column =0,sticky = "we",rowspan = 2) var_scale = DoubleVar() progress_scal = Scale(progress_lab,orient = HORIZONTAL,showvalue = 0,length =180,variable = var_scale) #progress_scal.bind("<Button-1>",pause) #progress_scal.bind("") #progress_scal.bind("<ButtonRelease-1>",play) progress_scal.grid(row =3,column =0) modee_lab = LabelFrame(root,text = "播放模式") modee_lab.grid(row =4,column =0,rowspan =4,sticky = "ws") var_mode = IntVar() randomradio = Radiobutton(modee_lab,variable = var_mode,value = 1,text ="隨機(jī)播放",command =List_random ) randomradio.grid(row =4,column =2) inturnradio = Radiobutton(modee_lab,variable = var_mode,value =2,text= "順序播放",command = play) inturnradio.grid(row=4,column =3) alloop = Radiobutton(modee_lab,variable = var_mode,value =2,text = "全部循環(huán)播放",command = List_loop) alloop.grid(row =5,column = 2) sinloop = Radiobutton(modee_lab,variable = var_mode,value =3,text = "單曲循環(huán)播放") sinloop.grid(row =5,column =3) previous_play = Button(modee_lab,text = "上一曲",height =1,command = Previous_it) previous_play.grid(row =6,column =2,rowspan =2,pady =5) next_play = Button(modee_lab,text = "下一曲",height =1,command = Next_it) next_play.grid(row =6,column =3,rowspan =2,pady =5) var_volume = IntVar() vioce_lab = LabelFrame(root,text = "音量控制") vioce_lab.grid(row =8,column =0,sticky = "wes") vio_scale = Scale(vioce_lab,orient = HORIZONTAL,length =170,variable = var_volume,command =Volume_ctr) vio_scale.set(30) vio_scale.grid(row =8,column =0) vio_plus = Button(vioce_lab,width =8,text = "增加音量+",command =Volume_add) vio_plus.grid(row =9,column =0,sticky = "w") vio_minus = Button(vioce_lab,width =8,text ="減少音量-",command = Volume_minus) vio_minus.grid(row =9,column =0,sticky ="e") ctr_lab = LabelFrame(root,text = "播放控制",height =130) ctr_lab.grid(row =0,column =1,rowspan =12,sticky = "ns") btn_open = Button(ctr_lab,text ="打開音樂(lè)文件",width =10,command = openfile) btn_open.grid(row=0,column =1) btn_play = Button(ctr_lab,text ="播放",width =10,command = play) btn_play.grid(row =1,column =1,pady =5) btn_stop = Button(ctr_lab,text ="停止",width =10,command = stop) btn_stop.grid(row =2,column =1,pady =5) btn_pause = Button(ctr_lab,text ="暫停",width =10,command = pause) btn_pause.grid(row =3,column =1,pady =5) btn_playlist = Button(ctr_lab,text ="新建播放列表",width =10,command = uselist) btn_playlist.grid(row =4,column =1,pady =5) listimport = Button(ctr_lab,width =10,text = "導(dǎo)入列表") listimport.grid(row =6,column =1,sticky ="nw",pady =5) listexport = Button(ctr_lab,width =10,text = "導(dǎo)出列表") listexport.grid(row =7,column =1,sticky = "nw",pady =5) listdel_all = Button(ctr_lab,width =10,text = "清空列表",command = Clear_list) listdel_all.grid(row =8,column =1,sticky ="nw",pady =5) listdel_sel= Button(ctr_lab,width =10,text = "刪除歌曲") listdel_sel.grid(row =12,column =1,sticky = "nw",pady =5) savelist_btn = Button(ctr_lab,text = "保存為列表") savelist_btn.grid(row=9,column =1) min_btn = Button(ctr_lab,text = "最小化窗口",command = root.iconify) min_btn.grid(row =13,column =1) time_lab= Label(root,width =20,height =2,text ="現(xiàn)在時(shí)間為:") time_lab.grid(row =12,column =0,sticky = "nw",pady =5) time_text= Text(root,width =30,height =3,foreground ="green") time_text.grid(row =10,column =0,sticky = "nw",pady =5) list_name = Text(root,height =18,width =110) list_name.grid(row =0,column =2,sticky = "n",rowspan =6) root.mainloop()
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家學(xué)習(xí)python程序設(shè)計(jì)有所幫助。
- Python實(shí)現(xiàn)在線音樂(lè)播放器
- 基于python實(shí)現(xiàn)音樂(lè)播放器代碼實(shí)例
- python實(shí)現(xiàn)簡(jiǎn)易云音樂(lè)播放器
- python 制作簡(jiǎn)單的音樂(lè)播放器
- 基于Python實(shí)現(xiàn)音樂(lè)播放器的實(shí)現(xiàn)示例代碼
- Python編程實(shí)現(xiàn)簡(jiǎn)易的音樂(lè)播放器基本操作
- 使用Python的音樂(lè)播放器GUI的實(shí)現(xiàn)
- 基于Python實(shí)現(xiàn)本地音樂(lè)播放器的制作
- Python制作一個(gè)多功能音樂(lè)播放器
相關(guān)文章
Python實(shí)現(xiàn)字典去除重復(fù)的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)字典去除重復(fù)的方法,涉及Python字典遍歷、文件讀取、去除重復(fù)等相關(guān)操作技巧,需要的朋友可以參考下2017-07-07python樹莓派通過(guò)隊(duì)列實(shí)現(xiàn)進(jìn)程交互的程序分析
這篇博客就結(jié)合實(shí)際的python程序通過(guò)隊(duì)列實(shí)現(xiàn)進(jìn)程交互,通過(guò)程序分析需要的庫(kù)函數(shù),對(duì)python樹莓派進(jìn)程交互相關(guān)知識(shí)感興趣的朋友一起看看吧2021-07-07python3 traceback模塊來(lái)追蹤和打印異常信息
本文主要介紹了python3 traceback模塊來(lái)追蹤和打印異常信息,這個(gè)模塊提供了許多函數(shù)來(lái)處理異常,并且能夠輸出異常的堆棧信息,感興趣的可以了解一下2024-02-02基于spring boot 日志(logback)報(bào)錯(cuò)的解決方式
今天小編就為大家分享一篇基于spring boot 日志(logback)報(bào)錯(cuò)的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02python實(shí)現(xiàn)停車管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)停車管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11python用ConfigObj讀寫配置文件的實(shí)現(xiàn)代碼
發(fā)現(xiàn)一個(gè)簡(jiǎn)單而又強(qiáng)大的讀寫配置文件的lib,個(gè)人覺得最大的亮點(diǎn)在于自帶的格式校驗(yàn)功能,并且支持復(fù)雜的嵌套格式,而且使用起來(lái)也相當(dāng)?shù)暮?jiǎn)便2013-03-03Python基于pillow庫(kù)實(shí)現(xiàn)生成圖片水印
這篇文章主要介紹了Python基于pillow庫(kù)實(shí)現(xiàn)生成圖片水印,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09