• 使用Python创建音乐播放器


    1. 介绍

    在本篇博客中,我们将介绍如何使用Python编程语言和wxPython模块创建一个简单的音乐播放器。我们将使用wxPython来构建用户界面,并借助pygame模块来实现音频播放的功能。
    C:\pythoncode\new\quickplaywav.py
    在这里插入图片描述

    2. 使用方法

    使用我们提供的源代码,按照以下步骤来使用音乐播放器:

    1. 安装所需的Python模块,包括wxPython和pygame。可以使用以下命令来安装:

      pip install wxPython pygame
      
      
      
      • 1
      • 2
      • 3
    2. 运行源代码并打开音乐播放器应用程序。

    3. 单击"选择文件夹"按钮,选择包含MP3音频文件的文件夹。

    4. 选择的文件夹中的所有MP3文件将显示在列表框中。

    5. 将鼠标悬停在列表框中的任何一个MP3文件上,将会自动播放相应的音频文件。

    6. 将鼠标移开时,音频播放将停止。

    7. 如需更换音乐文件夹,只需点击"选择文件夹"按钮,重新选择文件夹即可。

    3. 思路

    创建音乐播放器的思路如下:

    1. 使用wxPython模块创建一个窗口和按钮,以及一个列表框用于显示音乐文件路径。

    2. 使用pygame模块来处理音频文件的播放。

    3. 当单击"选择文件夹"按钮时,弹出文件夹选择对话框,用户可以选择包含MP3文件的文件夹。

    4. 遍历所选文件夹中的所有文件,并筛选出以".mp3"结尾的文件,将其路径添加到列表框中。

    5. 当鼠标悬停在列表框中的某个项上时,获取该项的路径,并使用pygame播放相应的音频文件。

    6. 当鼠标移开时,停止音频播放。

    4. 源代码

    以下是使用wxPython和pygame模块创建音乐播放器的源代码:

    import wx
    import os
    import pygame
    
    class MyFrame(wx.Frame):
        def __init__(self, parent):
            super().__init__(parent, title="音乐播放器")
            self.current_item = None  # 当前选中的项
            
            panel = wx.Panel(self)
            sizer = wx.BoxSizer(wx.VERTICAL)
            
            # 创建文件夹选择按钮
            folder_button = wx.Button(panel, label="选择文件夹")
            folder_button.Bind(wx.EVT_BUTTON, self.on_select_folder)
            sizer.Add(folder_button, 0, wx.ALL|wx.CENTER, 10)
            
            # 创建音乐列表框
            self.listbox = wx.ListBox(panel, style=wx.LB_SINGLE)
            self.listbox.Bind(wx.EVT_ENTER_WINDOW, self.on_listbox_enter)
            self.listbox.Bind(wx.EVT_LEAVE_WINDOW, self.on_listbox_leave)
            sizer.Add(self.listbox, 1, wx.EXPAND|wx.ALL, 10)
            
            panel.SetSizer(sizer)
            
            # 初始化 pygame
            pygame.init()
            pygame.mixer.init()
            
        def on_select_folder(self, event):
            # 打开文件夹选择对话框
            dialog = wx.DirDialog(self, "选择文件夹", style=wx.DD_DEFAULT_STYLE)
            if dialog.ShowModal() == wx.ID_OK:
                folder_path = dialog.GetPath()
                self.populate_listbox(folder_path)
            dialog.Destroy()
        
        def populate_listbox(self, folder_path):
            # 清空列表框
            self.listbox.Clear()
            
            # 遍历文件夹中的MP3文件,并添加到列表框中
            for root, dirs, files in os.walk(folder_path):
                for file in files:
                    if file.endswith(".mp3"):
                        file_path = os.path.join(root, file)
                        self.listbox.Append(file_path)
        
        def on_listbox_enter(self, event):
            # 获取当前选中的项
            index = self.listbox.GetSelection()
            if index != wx.NOT_FOUND:
                self.current_item = self.listbox.GetString(index)
                self.play_audio(self.current_item)
        
        def on_listbox_leave(self, event):
            if self.current_item is not None:
                self.stop_audio()
                self.current_item = None
        
        def play_audio(self, file_path):
            pygame.mixer.music.load(file_path)
            pygame.mixer.music.play()
        
        def stop_audio(self):
            pygame.mixer.music.stop()
    
    if __name__ == "__main__":
        app = wx.App()
        frame = MyFrame(None)
        frame.Show()
        app.MainLoop()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    5. 说明

    在上述源代码中,我们使用了wxPython模块来创建用户界面,包括一个窗口、一个按钮和一个列表框。我们还使用了pygame模块来处理音频播放的功能。

    当用户单击"选择文件夹"按钮时,会弹出一个文件夹选择对话框,用户可以选择包含MP3文件的文件夹。所选文件夹的路径将传递给populate_listbox函数,该函数将遍历文件夹中的所有文件,并筛选出以".mp3"结尾的文件,将它们的路径添加到列表框中。

    当用户将鼠标悬停在列表框中的某个项上时,程序将获取该项的路径,并使用pygame来播放相应的音频文件。当鼠标离开该项时,音频播放将停止。

    6. 总结

    通过本篇博客,我们学习了如何使用Python编程语言和wxPython模块创建一个简单的音乐播放器。我们利用wxPython构建了用户界面,使用pygame来处理音频播放的功能。

    我们的音乐播放器具有选择文件夹、显示文件列表以及悬停播放音乐的功能。用户只需按照指示选择音乐文件夹,然后可以通过鼠标悬停在列表框中的项上来播放相应的音频文件。

  • 相关阅读:
    LabVIEW通过网络传输数据
    Python单元测试-pytest
    竞赛 深度学习 python opencv 实现人脸年龄性别识别
    shell脚本—— case语句+函数
    60%专科生月薪低于5K?测试员:这锅我们不背....
    [附源码]Python计算机毕业设计Django贷款申请审核管理系统论文
    微信小程序 获取当前屏幕的可见高宽度
    xxl-job调度的一致性及路由选择策略
    SQL行列转换
    基于 Apache Hudi 构建增量和无限回放事件流的 OLAP 平台
  • 原文地址:https://blog.csdn.net/winniezhang/article/details/132862388