python3音乐播放器简单实现代码
本文实例为大家分享了python3音乐播放器的关键代码,供大家参考,具体内容如下
fromtkinterimport* fromtracebackimport* fromwin32com.clientimportDispatch importtime,eyed3,threading name=[] defopenfile(index=[1]): globaltotal,name filenames=filedialog.askopenfilenames(title="音乐播放器",filetypes=[("mp3文件","*.mp3"),("WMA文件","*.wma"),("WAV文件","*.wav")]) iffilenames: foriinrange(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) ifsec>=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) defplay(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)#放到暂停那里居然可以用,而这里不行 defper(): globaltotal whilewmp.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) defstop(): wmp.controls.stop() defpause(event=None): wmp.controls.pause() defuselist(): pass deffullscr(): pass defexitit(): root.destroy() defPrevious_it(): wmp.controls.previous() defNext_it(): wmp.controls.next() defVolume_ctr(none): wmp.settings.Volume=vio_scale.get() defVolume_add(i=[0]): wmp.settings.Volume=wmp.settings.Volume+5 i.append(wmp.settings.Volume) vio_scale.set(wmp.settings.Volume) defVolume_minus(i=[0]): wmp.settings.Volume=wmp.settings.Volume-5 i.append(wmp.settings.Volume) vio_scale.set(wmp.settings.Volume) defScale_ctr(none): wmp.controls.currentPosition=var_scale.get() print(wmp.currentMedia.duration) defClear_list(): wmp.currentPlaylist.clear() list_name.delete(1.0,END) name=[] index=[] defList_random(): wmp.settings.setMode("shuffle",True) play() defList_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("<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="随机播放",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程序设计有所帮助。