Python3_pygame---简易的音乐播放器

使用pygame.mixer.music模块,结合pickle、os和tkinter创建了一个简易音乐播放器。程序包括文件操作、音乐播放、界面交互等功能,通过tkinter.Tk实现二级窗口交互。主要功能有音乐载入、播放、添加、前进、后退等。
摘要由CSDN通过智能技术生成

Python3_pygame—简易的音乐播放器

在pygame的学习中,接触到了其中的mixer.music模块,突发想法,就写了这个音乐播放器,可能时间不是太多,就只做了基础的部分。
本播放器使用了python中内置的模块:
pygame(pygame.mixer.music, pygame.event, pygame.time, pygame.display, pygame.draw.rect)
pickle(pickle.dump, pickle.load)
os(os.path.exists)
tkinter(tkinter.filedialog.askopenfilename, tkinter.messagebox,tkinter.Tk)
sys(sys.exit)

整个播放器的核心为pygame.mixer.music模块,以文件操作、pickle和os为辅完成音乐的载入和播放,用pygame.display建立窗口框架和窗口小组件,结合tkinter.Tk等建立二级小窗口协作完成整个程序。

本程序分为如下两大类和一个主函数:

  1. 文件类
    文件类主要负责完成音乐载入、播放、添加等操作。

定义函数:

def __init__(self):
        self.flag = False	//音乐是否停止(可以去掉,因为音乐停止后获取音乐播放进度还是不变)
        self.number = 0  //记录当前播放音乐的序号
        self.all = 0	//音乐的总个数
        self.length = 0	//当前音乐的长度
        self.current = 0	//当前音乐播放的进度
        self.load_information()	//载入音乐

载入音乐路径文件函数:

def load_information(self):
        global music_list 	//声明:在程序前方已经有全局变量定义,此为音乐路径文件
        global music_name	//同上,此为音乐名称文件
        if os.path.exists("music.txt") == 0:	//检测音乐文件是否存在...
            music_db = open("music.txt", "wb") //创建文件
            music_nm = open("name.txt","wb")
            music_list = ['徐梦圆 - China-X.ogg']
            music_name = ['徐梦圆 - China-X']
            pickle.dump(music_list, music_db)	//将列表保存到文件中
            pickle.dump(music_name, music_nm)	//同上
            self.all = len(music_list)
            music_db.close()
            music_nm.close()

        else:
            music_db = open("music.txt", "rb")
            music_nm = open("name.txt","rb")
            music_list = pickle.load(music_db)	//读取文件
            music_name = pickle.load(music_nm) //同上
            self.all = len(music_list)
            music_db.close()
            music_nm.close()

对音乐文件内容的实时更新和保存函数:

def save_music(self):
        music_db = open("music.txt","wb") 
        music_nm = open("name.txt", "wb")
                        
        pickle.dump(music_list, music_db)
        pickle.dump(music_name, music_nm)
        music_db.close()
        music_nm.close()

从本地系统添加音乐的函数:

def add_music(self):  //稍微有些复杂此函数
        middle = []
        name_ = []
        root = tkinter.Tk()	//创建父窗口
        root.withdraw()	//让父窗口隐藏
        self.file_opt = options = {}	//一些关于askopenfilenames的参数
        options['defaultextension'] = ''
        options['filetypes'] = [('ogg files', '.ogg'), ('wav files', '.wav'),('mp3 files','.mp3')]
        options['initialdir'] = 'C:\\'
        options['initialfile'] = ''
        options['parent'] = root //root为打开文件的父窗口
        options['title'] = '添加音乐文件...'

        path_ = tkinter.filedialog.askopenfilenames(**self.file_opt)

        root.destroy() //消除父窗口

        for each in path_: //从音乐路径中的筛选出音乐名称
           each = list(each)
           name = ''
           flag = False
           while True:
               try:
        
  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值