欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python使用PySimpleGUI和Pygame編寫一個(gè)MP3播放器

 更新時(shí)間:2023年11月14日 11:29:34   作者:IT里的交易員  
這篇文章主要為大家詳細(xì)介紹了Python如何使用PySimpleGUI和Pygame編寫一個(gè)簡(jiǎn)單的MP3播放器,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下

前言

閑來(lái)無(wú)事,做了MP3播放器練練手,主要是研究下PySimpleGUI的界面窗口設(shè)計(jì)。先上圖,一睹為快。

一、來(lái)說(shuō)說(shuō)思路

文心一言提供

要使用PySimpleGUI和Pygame來(lái)創(chuàng)建一個(gè)MP3播放器,你需要完成以下步驟:

需求定義:

  • 用戶應(yīng)能夠通過(guò)一個(gè)圖形用戶界面(GUI)瀏覽并選擇MP3文件。
  • 播放器應(yīng)有播放/暫停按鈕,允許用戶控制音樂(lè)的播放。
  • 播放器應(yīng)有一個(gè)音量控制滑塊,允許用戶調(diào)整音量。
  • 播放器應(yīng)有一個(gè)進(jìn)度條,顯示當(dāng)前播放的位置和總長(zhǎng)度。
  • 用戶應(yīng)能夠通過(guò)拖動(dòng)進(jìn)度條來(lái)控制播放的位置。
  • 用戶應(yīng)能夠刪除已選擇的MP3文件。

實(shí)現(xiàn)步驟:

安裝PySimpleGUI和Pygame庫(kù):首先,你需要確保已經(jīng)安裝了這兩個(gè)庫(kù)。如果沒(méi)有,你可以使用pip命令進(jìn)行安裝:

pip install PySimpleGUI
pip install pygame

創(chuàng)建GUI布局:使用PySimpleGUI創(chuàng)建一個(gè)窗口,并設(shè)置一個(gè)FileBrowse元素用于選擇MP3文件。你還需要為播放/暫停按鈕,音量滑塊,進(jìn)度條和刪除按鈕設(shè)置相應(yīng)的布局。

編寫事件處理函數(shù):你需要為FileBrowse元素,播放/暫停按鈕,音量滑塊,進(jìn)度條和刪除按鈕分別編寫事件處理函數(shù)。例如,當(dāng)用戶選擇一個(gè)文件時(shí),F(xiàn)ileBrowse元素的事件處理函數(shù)將啟動(dòng)MP3播放。播放/暫停按鈕的事件處理函數(shù)將控制音樂(lè)的播放/暫停。音量滑塊的事件處理函數(shù)將調(diào)整音量。進(jìn)度條的事件處理函數(shù)將更新播放的位置。刪除按鈕的事件處理函數(shù)將刪除已選擇的MP3文件。

集成Pygame音頻播放:使用Pygame的mixer模塊來(lái)播放MP3文件。你需要?jiǎng)?chuàng)建一個(gè)函數(shù),當(dāng)用戶選擇一個(gè)文件時(shí),這個(gè)函數(shù)將調(diào)用mixer.music.load()加載文件,然后調(diào)用mixer.music.play()開(kāi)始播放。你還需要編寫暫停和恢復(fù)播放的函數(shù)。

測(cè)試并完善:最后,你需要測(cè)試你的MP3播放器,確保所有的功能都按照預(yù)期工作。你可能還需要添加一些錯(cuò)誤處理代碼,以處理例如文件不存在等可能出現(xiàn)的問(wèn)題。

這只是一個(gè)基本的實(shí)現(xiàn)步驟。根據(jù)你的具體需求和偏好,你可能需要添加更多的功能和元素。

二、完整代碼

(參考文心,自行修改)

import PySimpleGUI as sg
import pygame
import os,time

sg.theme('LightGreen')

layout = [
    [sg.Text('選擇MP3文件'), sg.Button('打開(kāi)文件夾')],
    [sg.Listbox(values=[], size=(40, 10), key='music_list', enable_events=True)],
    [sg.Button('播放',key='play'), sg.Button('暫停',key='pause')],
    [sg.Text('音量'), sg.Slider(range=(0, 100), default_value=50, orientation='horizontal', key='volume', enable_events=True,)],
    ]

window = sg.Window('MP3 播放器--IT里的交易員', layout)

# 創(chuàng)建播放列表
music_list = []

# 初始化播放器
pygame.mixer.init()

while True:
    event, values = window.read()

    if event == sg.WIN_CLOSED:
        break
    # 打開(kāi)MP3文件所在文件夾,自動(dòng)搜索MP3文件并創(chuàng)建播放列表
    elif event == '打開(kāi)文件夾':
        folder_path = sg.popup_get_folder('請(qǐng)選擇文件夾', initial_folder=os.getcwd())
        for file_name in os.listdir(folder_path):
            if file_name.endswith('.mp3'):
                music_list.append(os.path.join(folder_path, file_name))
        window['music_list'].update(music_list)
    # 點(diǎn)擊文件名后,自動(dòng)開(kāi)始播放,并將按鈕修改為停止;如正在播放,點(diǎn)擊計(jì)停止播放,并將按鈕修改為播放
    elif event == 'play':
        if pygame.mixer.music.get_busy():
            pygame.mixer.music.stop()
            window['play'].update('播放')
        else:
            music = values['music_list'][0]
            if music:
                pygame.mixer.music.load(music)
                pygame.mixer.music.play()
                window['play'].update('停止')
            else:
                sg.popup("請(qǐng)打開(kāi)MP3所在文件夾")
    # 點(diǎn)擊文件名后,自動(dòng)開(kāi)始播放
    elif event == 'music_list' and len(values['music_list']):
        music = values['music_list'][0]
        if music:
            pygame.mixer.music.load(music)
            pygame.mixer.music.play()
            window['play'].update('停止')
        else:
            sg.popup("請(qǐng)打開(kāi)MP3所在文件夾")
    # 如果正在播放按了暫停,修改為繼續(xù);如果取消暫停則改為暫停
    elif event == 'pause':
        if pygame.mixer.music.get_busy():
            pygame.mixer.music.pause()
            window['pause'].update('繼續(xù)')
        else:
            pygame.mixer.music.unpause()
            window['pause'].update('暫停')
    # 中途可以通過(guò)修改播放音量,為0-1。需要將顯示的數(shù)據(jù)除以100得到修改值
    elif event == 'volume':
        pygame.mixer.music.set_volume(values['volume'] / 100)

window.close()

總結(jié)

本文通過(guò)對(duì)MP3文件播放,學(xué)習(xí)了PySimpleGUI和Pygame的基本操作,調(diào)測(cè)心得如下:

1、PySimpleGUI的layout 為界面構(gòu)成,使用列表即可完成界面設(shè)計(jì),這個(gè)很簡(jiǎn)單,對(duì)于設(shè)計(jì)簡(jiǎn)單的GUI交互界面確實(shí)很高效。key是操作這些界面元素的關(guān)鍵,當(dāng)然也可以用界面文字,因?yàn)椴缓每刂?,最終增加了key來(lái)實(shí)現(xiàn)文字修改和操作。

2、event, values = window.read()。這里的event決定了相應(yīng)哪個(gè)元素,values 可以讀取到元素的值,也可以對(duì)其進(jìn)行修改。

3、pygame.mixer即可實(shí)現(xiàn)MP3播放。具體函數(shù)見(jiàn)附錄。

4、本來(lái)還想對(duì)播放列表實(shí)現(xiàn)增加刪除,但覺(jué)得意義不大就取消了。

5、播放進(jìn)度,和拖放進(jìn)度功能,已實(shí)現(xiàn)播放中的顯示,但是中途無(wú)法切換播放文件,和操作習(xí)慣不太相符,以后實(shí)現(xiàn)了再說(shuō)。

附錄

pygame.mixer.music.load()  ——  載入一個(gè)音樂(lè)文件用于播放

pygame.mixer.music.play()  ——  開(kāi)始播放音樂(lè)流

pygame.mixer.music.rewind()  ——  重新開(kāi)始播放音樂(lè)

pygame.mixer.music.stop()  ——  結(jié)束音樂(lè)播放

pygame.mixer.music.pause()  ——  暫停音樂(lè)播放

pygame.mixer.music.unpause()  ——  恢復(fù)音樂(lè)播放

pygame.mixer.music.fadeout()  ——  淡出的效果結(jié)束音樂(lè)播放

pygame.mixer.music.set_volume()  ——  設(shè)置音量

pygame.mixer.music.get_volume()  ——  獲取音量

pygame.mixer.music.get_busy()  ——  檢查是否正在播放音樂(lè)

pygame.mixer.music.set_pos()  ——  設(shè)置播放的位置

pygame.mixer.music.get_pos()  ——  獲取播放的位置

pygame.mixer.music.queue()  ——  將一個(gè)音樂(lè)文件放入隊(duì)列中,并排在當(dāng)前播放的音樂(lè)之后

pygame.mixer.music.set_endevent()  ——  當(dāng)播放結(jié)束時(shí)發(fā)出一個(gè)事件

pygame.mixer.music.get_endevent()  ——  獲取播放結(jié)束時(shí)發(fā)送的事件

Pygame 中播放音樂(lè)的模塊和 pygame.mixer 模塊是密切聯(lián)系的。使用音樂(lè)模塊去控制在調(diào)音器上的音樂(lè)播放。

以上就是Python使用PySimpleGUI和Pygame編寫一個(gè)MP3播放器的詳細(xì)內(nèi)容,更多關(guān)于Python MP3播放器的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解決安裝sklearn包失敗問(wèn)題

    解決安裝sklearn包失敗問(wèn)題

    這篇文章主要介紹了解決安裝sklearn包失敗問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-10-10
  • Python基礎(chǔ)之標(biāo)準(zhǔn)庫(kù)和常用的第三方庫(kù)案例教程

    Python基礎(chǔ)之標(biāo)準(zhǔn)庫(kù)和常用的第三方庫(kù)案例教程

    這篇文章主要介紹了Python基礎(chǔ)之標(biāo)準(zhǔn)庫(kù)和常用的第三方庫(kù)案例教程,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 淺談Python爬取網(wǎng)頁(yè)的編碼處理

    淺談Python爬取網(wǎng)頁(yè)的編碼處理

    下面小編就為大家?guī)?lái)一篇淺談Python爬取網(wǎng)頁(yè)的編碼處理。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-11-11
  • 用Python批量把文件復(fù)制到另一個(gè)文件夾的實(shí)現(xiàn)方法

    用Python批量把文件復(fù)制到另一個(gè)文件夾的實(shí)現(xiàn)方法

    這篇文章主要介紹了用Python批量把文件復(fù)制到另一個(gè)文件夾的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 使用python實(shí)現(xiàn)掃描端口示例

    使用python實(shí)現(xiàn)掃描端口示例

    這篇文章主要介紹了使用python實(shí)現(xiàn)掃描端口示例,需要的朋友可以參考下
    2014-03-03
  • 教你用Python代碼實(shí)現(xiàn)合并excel文件

    教你用Python代碼實(shí)現(xiàn)合并excel文件

    近幾天一直因?yàn)閑xcel文件太多太雜的原因苦惱,今天特地整理了本篇文章,文章介紹的非常詳細(xì),對(duì)正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • python如何實(shí)現(xiàn)MK突變檢驗(yàn)方法,代碼復(fù)制修改可用

    python如何實(shí)現(xiàn)MK突變檢驗(yàn)方法,代碼復(fù)制修改可用

    這篇文章主要介紹了python如何實(shí)現(xiàn)MK突變檢驗(yàn)方法,代碼復(fù)制修改可用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 在Python中用GDAL實(shí)現(xiàn)矢量對(duì)柵格的切割實(shí)例

    在Python中用GDAL實(shí)現(xiàn)矢量對(duì)柵格的切割實(shí)例

    這篇文章主要介紹了在Python中用GDAL實(shí)現(xiàn)矢量對(duì)柵格的切割實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • Python 遍歷循環(huán)詳細(xì)

    Python 遍歷循環(huán)詳細(xì)

    這篇文章主要介紹的是Python 遍歷循環(huán),遍歷循環(huán)可理解為從遍歷結(jié)構(gòu)中逐一提取元素,放在循環(huán)變量中,對(duì)于所提取的每個(gè)元素執(zhí)行一次語(yǔ)句塊。由保留字for和in組成,完整遍歷所有元素后結(jié)束每次循環(huán),所獲得元素放入循環(huán)變量,并執(zhí)行一次語(yǔ)句塊,下面就來(lái)看文章介紹
    2021-10-10
  • Python裝飾器基礎(chǔ)詳解

    Python裝飾器基礎(chǔ)詳解

    裝飾器(decorator)是一種高級(jí)Python語(yǔ)法。裝飾器可以對(duì)一個(gè)函數(shù)、方法或者類進(jìn)行加工。接下來(lái)通過(guò)本文給大家介紹python裝飾器基礎(chǔ),對(duì)python裝飾器相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2016-03-03

最新評(píng)論