失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python中pygame模块编写音乐播放器

python中pygame模块编写音乐播放器

时间:2019-07-08 00:22:34

相关推荐

python中pygame模块编写音乐播放器

今天下午也是闲来没事听音乐,就突发奇想自己写一个音乐播放器,这里就讲一下写这个播放器时所用到的模块及编写过程。

播放器用到了os模块,pygame模块还有sys模块。

首先当然是先调用模块

使用import进行调用模块,如果没有该模块则需要安装该模块

pip install 模块名

pygame.mixer.init() #对pygame进行初始化操作

pygame.mixer.music.load(path) # 加载音乐

pygame.mixer.music.play()播放载入的音乐

import pygamedef music(path):pygame.mixer.init()pygame.mixer.music.load(path)pygame.mixer.music.play()i = input("")if __name__ == '__main__':path = "E:\xxx\xxx.mp3"music(path)

i = input("") 写它的原因是不让程序终止,不然音乐还没播放就退出程序了

上面的代码已经可以初步的进行播放音乐了,但如果只是播放音乐远远不能满足我,我还要它能够暂停播放、继续播放、以及换下一首。

想要完成换歌的功能那就需要多首音乐,而这些音乐就要在一个文件夹里面,但是要怎么把这些音乐一个一个的读取出来呢?

这里就使用到了os模块中的listdir方法。

import ospath = os.listdir("文件夹路径")# 必须是绝对路径

os.listdir读取出来的文件会放在一个列表里面

path = ["aaa.mp3", "bbb.mp3", "ccc.mp3", ……]

这时候我们就需要一个一个的进行提取出来再进行播放

这里就用到了索引,如下

import pygameimport osdef music(path, option="3"):a = 0 # 索引默认为0while True:if option == "3":paths = path[a] # 第一次运行会先提取出索引为0的音乐进行播放a += 1# 索引加一path1 = f"{path_s}\\" + paths # 音乐路径+音乐 例:D:\xxx\ + aa.mp3pygame.mixer.init()pygame.mixer.music.load(path1)pygame.mixer.music.play()option = input()if __name__ == '__main__':path_s = input("请输入歌曲路径:")path = os.listdir(f"{path_s}\\") # 两个斜杠转义为一个斜杠 \\ = \music(path)

下面就是播放器的源码

#!E:\python3\python.exe# -*-coding:utf-8-*-import pygameimport sysimport osprint("原创作者:听雨是菜鸡")print("1 == 暂停播放\n""2 == 继续播放\n""3 == 下一首\n""4 == 退出")def music(path, option="3"):a = 0while True:if option == "3":paths = path[a]a += 1path1 = f"{path_s}\\" + paths# print(path1)pygame.mixer.init()pygame.mixer.music.load(path1)pygame.mixer.music.play()option = input("请输入:")if option == "1":pygame.mixer.music.pause()elif option == "2":pygame.mixer.music.unpause()elif option == "4":sys.exit("退出播放")if __name__ == '__main__':path_s = input("请输入歌曲路径:")path = os.listdir(f"{path_s}\\")music(path)

本人也是一个初学者,文章哪里写的不对还请见谅

欢迎大佬在评论区留言

如果觉得《python中pygame模块编写音乐播放器》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。