溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何利用Python編寫本地音樂播放器

發(fā)布時間:2022-03-28 09:44:49 來源:億速云 閱讀:337 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要為大家展示了“如何利用Python編寫本地音樂播放器”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何利用Python編寫本地音樂播放器”這篇文章吧。

先上完整代碼:

修改文件夾路徑即可運行

# -*- encoding: utf-8 -*-
'''
@Description:       :
@Date     :2022/03/24 17:43:26
@Author      :驟&雨
@version      :1.0
'''
#導(dǎo)入相關(guān)庫文件
import os
import tkinter
import tkinter.filedialog
import random
import time
import threading
import pygame

from asyncio.base_tasks import _task_print_stack
from cProfile import label
from email import header
from functools import total_ordering
from importlib import find_loader
from logging import root
from mimetypes import init
from re import X
from turtle import width
from matplotlib.pyplot import pause
from scipy import rand

#設(shè)置文件夾路徑
folder = r'C:\Users\Administrator\Desktop\Python\Python Code\TiquMusicFromVedio'


"""
@description  : 音樂播放,默認(rèn)播放文件夾內(nèi)的所有mp3文件
---------
@param  :
-------
@Returns  :
-------
"""
def play():
    global folder
    music =[folder+'\\'+music for music in os.listdir(folder)\
        if music.endswith(('.mp3','.wav','.ogg'))]
    total = len(music)
    #初始化混音器設(shè)備
    pygame.mixer.init()
    while playing:
        if not pygame.mixer.music.get_busy():
            #隨機播放一首歌曲
            nextMusic = random.choice(music)
            pygame.mixer.music.load(nextMusic.encode())
            #播放一次
            pygame.mixer.music.play(1)
            musicName.set('playing.......'+nextMusic)
        else:
            time.sleep(0.3)

root = tkinter.Tk()
root.title('音樂播放器')
root.geometry('700x80+400+300')
root.resizable(False,False)

#關(guān)閉程序時執(zhí)行的代碼
def closeWindow():
    global playing
    playing = False
    try:
        pygame.mixer.music.stop()
        pygame.mixer.quit()
    except:
        pass
    root.destroy()
root.protocol('WM_DELETE_WINDOW',closeWindow)
pause_resume=tkinter.StringVar(root,value = 'NotSet')
playing = False

#播放按鈕
def  buttonPlayClick():
    global folder
    if not folder:
        folder = tkinter.filedialog.askdirectory()
    if not folder:
        return
    global playing
    playing = True


    #創(chuàng)建一個線程來播放音樂
    t = threading.Thread(target=play)
    t.start()
    #根據(jù)情況禁用或啟用相應(yīng)按鈕
    buttonPlay['state'] = 'disabled'
    buttonStop['state'] = 'normal'
    buttonPause['state'] = 'normal'
    buttonNext['state'] = 'normal'
    pause_resume.set('Pause')
buttonPlay = tkinter.Button(root,text = 'Play',command=buttonPlayClick)
buttonPlay.place(x=20,y=10,width=50,height=20)

#終止按鈕
def buttonStopClick():
    global playing
    playing = False
    pygame.mixer.music.stop()
    musicName.set('暫時沒有播放音樂')
    buttonPlay['state'] = 'normal'
    buttonStop['state'] = 'disabled'
    buttonPause['state'] = 'disabled'
buttonStop = tkinter.Button(root,text='Stop',command=buttonStopClick)
buttonStop.place(x=80,y=10,width=50,height=20)
buttonStop['state']='disabled'

#暫停與恢復(fù) 復(fù)用按鈕
def buttonPauseClick():
    global playing
    if pause_resume.get()=='Pause':
        #playing = False
        pygame.mixer.music.pause()
        pause_resume.set('Resume')
    elif pause_resume.get()=='Resume':
        #playing = True
        pygame.mixer.music.unpause()
        pause_resume.set('Pause')
buttonPause = tkinter.Button(root,textvariable=pause_resume,command=buttonPauseClick)
buttonPause.place(x=140,y=10,width=50,height=20)
buttonPause['state']='disabled'

#下一首
def buttonNextClick():
    global playing
    playing = False
    pygame.mixer.music.stop()
    pygame.mixer.quit()
    buttonPlayClick()
buttonNext = tkinter.Button(root,text='Next',command=buttonNextClick)
buttonNext.place(x=200,y=10,width=50,height=20)
buttonNext['state']='disabled'

musicName = tkinter.StringVar(root,value='暫時沒有播放音樂!')
labelName = tkinter.Label(root,textvariable=musicName)
labelName.place(x=0,y=40,width=700,height=20)

#啟動消息循環(huán)
root.mainloop()

運行結(jié)果如下:

如何利用Python編寫本地音樂播放器

以上是“如何利用Python編寫本地音樂播放器”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI