Python写一个音乐播放器
本来想把之前OCR重写UI再端上来的说
但是马上就期中了,所以就把之前的音乐播放器拿出来给大家看看吧
Python 库的导入
1 | import tkinter |
这里用的是tkinter图形库,pygame来做播放音乐的模块,os.path检测文件是否存在
初始化列表
1 | music_show=[] |
这两个列表,music_list来储存音乐路径,music_show来储存显示的歌曲名字
检测文件是否存在
1 | if os.path.exists('song.txt'): |
检测文件是否存在,并替换其中的换行符储存到music_list中
如果不存在就初始化变量
注意这边要写readlines不然会把所有的一个个字母拆分下来储存到列表中去
按照我写代码的习惯,我喜欢先空出地方,把UI放在后面,先写UI。但是想了想发现写博客不易看懂,所以提前到这里
1 | def root(): |
添加UI,没什么东西
我用的是相对坐标,比值算的比较细(就细了那么亿点)应该能看得懂吧
字体我是随便选的,不过我还是觉得苹果的苹方看着舒服
添加音乐
1 | def add(): |
先调用tkinter的文件选择,并限定格式,防止选中一些奇奇怪怪的东西进去
(什么?你问我为什么就这三种格式?想要别的格式可以pydub,可惜我不会用ffmpeg所以不多阐述)
然后将路径添加至music_list并IO写入文件保存下来(我为了省事直接txt了,感兴趣的可以json)
filename=os.path.basename(item) 分离文件名和路径并存入music_show,待会用于展示
删除
1 | def delet(): |
首先,获取选中Listbox的条目的索引
然后删除对应索引的元素
注意:当列表中只剩下一个元素又被删干净之后,list列表内无元素,无法写入show列表,所以try except排异
删除完记得重写覆写文件
播放音乐(终于能听个响了)
1 | def play(): |
global声明全局变量,因为下面暂停播放和取消播放也要用到
调用pygame模块,先停止所有音乐播放(防止冲突)再根据所选索引播放音乐
如果没有选择,则messagebox提示
停止
1 | def stop(): |
暂时暂停而不是取消播放,取消是stop
继续播放
与普通的播放不同,这个是继续刚刚暂停的任务
1 | def continueplay(): |
音量调整
1 | def voice(): |
先全局变量
然后创建一个子窗口voice
创建滑条并关联音量百分比
root()
启动!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Adeptmicors279的博客!
评论