基于python實(shí)現(xiàn)音樂(lè)播放器代碼實(shí)例
更新時(shí)間:2020年07月01日 11:16:39 作者:封亞飛
這篇文章主要介紹了基于python實(shí)現(xiàn)音樂(lè)播放器代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
核心播放模塊(pygame內(nèi)核)
import time
import pygame
import easygui as gui
file = r'D:\CloudMusic\G.E.M.鄧紫棋,艾熱 - 光年之外 (熱愛(ài)版).mp3' #這里為音樂(lè)文件路徑
pygame.mixer.init()
gui.msgbox("正在播放"+file)
track = pygame.mixer.music.load(file)
pygame.mixer.music.play()
time.sleep(240)
pygame.mixer.music.stop()
完整版源代碼:
import os
import tkinter
import tkinter.filedialog
import time
import threading
import pygame #實(shí)現(xiàn)音頻播放
#第一步:搭建界面
root = tkinter.Tk()
root.title('封亞飛的音樂(lè)播放器v1.0')
#設(shè)置窗口大小和屏幕絕對(duì)位置
root.geometry('460x600+500+100')
#固定窗口大小,設(shè)置窗口不可拉伸
root.resizable(False,False)
folder = '' # 接收文件路徑 默認(rèn)為空
res=[] #
num=0
now_music = ''
#第二步:實(shí)現(xiàn)功能
def buttonChooseClick():
#添加文件函數(shù)
global folder
global res
#如果folder不為空,則····
if not folder:
folder = tkinter.filedialog.askdirectory() #選擇目錄,返回目錄名
musics = [folder + '\\' + music
for music in os.listdir(folder)\
\
if music.endswith(('.mp3','.m4a','.wav','.ogg')) ]
ret = []
for i in musics:
ret.append(i.split('\\')[1:])
res.append(i.replace("\\",'/'))
var2 = tkinter.StringVar()
var2.set(ret)
lb = tkinter.Listbox(root,listvariable=var2)
lb.place(x=50,y=220,width=260,height=300)
if not folder:
return
global playing
playing = True
#根據(jù)情況禁用或啟用相應(yīng)按鈕
bottonPlay['state'] = 'normal'
bottonStop['state'] = 'normal'
#buttonPause['state'] = 'normal'
pause_resume.set('播放')
#播放音樂(lè)函數(shù)
def play():
#初始化混響設(shè)備
if len(res):
pygame.mixer.init()
global num
while playing:
if not pygame.mixer.music.get_busy():
#隨機(jī)播放
nextMusci = res[num]
print(nextMusci)
print(num)
pygame.mixer.music.load(nextMusci.encode())
#播放一次
pygame.mixer.music.play(1)
#print(len(res)-1)
if len(res) - 1 ==num:
num=0
else:
num +=1
nextMusci = nextMusci.split("\\")[1:]
musicName.set('playing....'+''.join(nextMusci))
else:
time.sleep(0.1)
#點(diǎn)擊播放函數(shù)
def bottonPlayClik():
bottonNext['state']='normal'
bottonPrev['state']='normal'
#選擇要播放的音樂(lè)文件夾
if pause_resume.get() == '播放':
pause_resume.set('暫停')
global folder
if not folder:
#選擇目錄,返回目錄名
folder = tkinter.filedialog.askdirectory()
if not folder:
return
global playing
playing = True
#創(chuàng)建一個(gè)進(jìn)程來(lái)播放音樂(lè),當(dāng)前主進(jìn)程用來(lái)接收用戶操作
t = threading.Thread(target=play)
t.start()
elif pause_resume.get() == '暫停':
pygame.mixer.music.pause()
pause_resume.set('繼續(xù)')
elif pause_resume.get()=='繼續(xù)':
pygame.mixer.music.unpause()
pause_resume.set('暫停')
#停止播放函數(shù)
def bottonStopClik():
global playing
playing = False
pygame.mixer.music.stop()
#下一首函數(shù)
def bottonNextClik():
global playing
playing = False
pygame.mixer.music.stop()
global num
if len(res) == num:
num=0
playing = True
global t
t = threading.Thread(target=play)
t.start()
#上一首函數(shù)
def bottonPrevClik():
global playing
playing=False
pygame.mixer.music.stop()
global num
if num==0:
num=len(res)-2
elif num ==len(res)-1:
num-=2
else:
num-=2
print(num)
playing = True
global t
t.threading.Thread(target=play)
t.start()
#關(guān)閉窗口函數(shù)
def closeWindows():
global playing
playing=False
time.sleep(0.3)
try:
pygame.mixer.music.stop()
pygame.mixer.quit()
except:
pass
root.destroy()
#聲音控制函數(shù)
def control_voice(value=0.5):
pygame.mixer.music.set_volume(float(value))
#添加按鈕
bottonChoose=tkinter.Button(root,text='添加',command=buttonChooseClick)
#按鈕布局
bottonChoose.place(x=50,y=50,width=50,height=20)
#播放按鈕 跟蹤變量值的變化
pause_resume=tkinter.StringVar(root,value='播放')
bottonPlay=tkinter.Button(root,textvariable=pause_resume,command=bottonPlayClik)
#按鈕布局
bottonPlay.place(x=120,y=50,width=50,height=20)
bottonPlay['state'] = 'disabled' #未添加文件(剛啟動(dòng))時(shí)禁用
#停止播放
bottonStop = tkinter.Button(root,text='停止')
#按鈕布局
bottonStop.place(x=50,y=130,width=50,height=20)
#下一首
bottonNext = tkinter.Button(root,text='下一首',command=bottonNextClik)
#按鈕布局
bottonNext.place(x=50,y=100,width=50,height=20)
bottonNext['state']='disabled'
#上一首
bottonPrev = tkinter.Button(root,text='上一首',command=bottonPrevClik)
#按鈕布局
bottonPrev.place(x=120,y=100,width=50,height=20)
bottonPrev['state']='disabled'
#顯示內(nèi)容--播放狀態(tài)
musicName = tkinter.StringVar(root,value='暫時(shí)沒(méi)有播放音樂(lè)...')
labelName = tkinter.Label(root,textvariable=musicName)
labelName.place(x=10,y=20,width=260,height=20)
#顯示內(nèi)容--音量調(diào)節(jié)
s = tkinter.Scale(root,label='音量',from_=0,to=1,orient=tkinter.HORIZONTAL,length=240,
showvalue=0,tickinterval=2,resolution=0.1,command=control_voice)
s.place(x=50,y=150,width=200)
#關(guān)閉窗口
root.protocol("WM_DELETE_WINDOW",closeWindows)
#啟用消息循環(huán):顯示出上一步創(chuàng)建的畫(huà)板對(duì)象
root.mainloop()
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- python3音樂(lè)播放器簡(jiǎn)單實(shí)現(xiàn)代碼
- Python實(shí)現(xiàn)在線音樂(lè)播放器
- python實(shí)現(xiàn)可下載音樂(lè)的音樂(lè)播放器
- 自己用python做的一款超炫酷音樂(lè)播放器
- python開(kāi)發(fā)簡(jiǎn)易版在線音樂(lè)播放器
- python實(shí)現(xiàn)簡(jiǎn)易云音樂(lè)播放器
- 基于Python實(shí)現(xiàn)音樂(lè)播放器的實(shí)現(xiàn)示例代碼
- python 制作簡(jiǎn)單的音樂(lè)播放器
- Python編程實(shí)現(xiàn)簡(jiǎn)易的音樂(lè)播放器基本操作
- Python制作簡(jiǎn)易音樂(lè)播放器的實(shí)現(xiàn)步驟記錄
相關(guān)文章
pampy超強(qiáng)的模式匹配工具的實(shí)現(xiàn)
在自然語(yǔ)言處理界,模式匹配可以說(shuō)是最常用的技術(shù)。甚至可以說(shuō),將NLP技術(shù)作為真實(shí)生產(chǎn)力的項(xiàng)目都少不了模式匹配。本文就介紹了pampy超強(qiáng)的模式匹配工具的實(shí)現(xiàn),感興趣的可以了解一下2021-07-07
python之yield表達(dá)式學(xué)習(xí)
這篇文章主要介紹了python之yield表達(dá)式學(xué)習(xí),python中有一個(gè)略微奇怪的表達(dá)式叫yield expression,本文就來(lái)探究一下這是個(gè)什么東西,需要的朋友可以參考下2014-09-09
Django ModelSerializer實(shí)現(xiàn)自定義驗(yàn)證的使用示例
本文主要介紹了Django ModelSerializer實(shí)現(xiàn)自定義驗(yàn)證的使用示例,多種字段驗(yàn)證器幫助開(kāi)發(fā)者確保數(shù)據(jù)的完整性和準(zhǔn)確性,具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11
Python爬蟲(chóng)解析網(wǎng)頁(yè)的4種方式實(shí)例及原理解析
這篇文章主要介紹了Python爬蟲(chóng)解析網(wǎng)頁(yè)的4種方式實(shí)例及原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
簡(jiǎn)述 Python 的類(lèi)和對(duì)象
這篇文章主要介紹了Python 的類(lèi)和對(duì)象的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-08-08
python-itchat 統(tǒng)計(jì)微信群、好友數(shù)量,及原始消息數(shù)據(jù)的實(shí)例
今天小編就為大家分享一篇python-itchat 統(tǒng)計(jì)微信群、好友數(shù)量,及原始消息數(shù)據(jù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02

