本文实例为大家分享了python3音乐播放器的关键代码,供大家参考,具体内容如下
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 = \"音乐播放器\",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函数中 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 = \"播放进度\") 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(\"\",pause) #progress_scal.bind(\"\") #progress_scal.bind(\" \",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 =\"随机播放\",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 = \"全部循环播放\",command = List_loop) alloop.grid(row =5,column = 2) sinloop = Radiobutton(modee_lab,variable = var_mode,value =3,text = \"单曲循环播放\") 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 =\"打开音乐文件\",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 = \"导入列表\") listimport.grid(row =6,column =1,sticky =\"nw\",pady =5) listexport = Button(ctr_lab,width =10,text = \"导出列表\") 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 =\"现在时间为:\") 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()
以上就是本文的全部内容,希望对大家学习python程序设计有所帮助。