侧边栏壁纸
博主头像
行迹小栈

即使明天我们的手脚都会折断,但是我们的衣领和袖口,依然笔挺!

  • 累计撰写 113 篇文章
  • 累计创建 13 个标签
  • 累计收到 9 条评论

目 录CONTENT

文章目录

Python制作mp3修改器

Administrator
2024-07-31 / 0 评论 / 3 点赞 / 33 阅读 / 0 字 / 正在检测是否收录...

简介

使用tkinter制作一个可以批量修改mp3的元数据,如标题,艺人,专辑等,还有封面

展示:

tk_mp3_17.png

所需package

Package Version

---------- -------

mutagen 1.47.0

pillow 10.4.0

pip 24.2

setuptools 69.5.1

tk 0.1.0

wheel 0.43.0

制作UI界面

使用tkinter布局助手制作好UI界面,并绑定好事件
tk_mp3_1.png

参考tkinter布局助手使用文档,需要创建三个文件,main.py control.py ui.py

然后复制代码到对应的文件,在control.py文件中,从ui文件导入Win,from ui import Win

还需要改一下这两个地方: ui: Win self.ui = ui

然后就可以调用ui.py文件里的组件实例了

tk_mp3_2.png

编写事件处理

在对应绑定的函数中编写事件处理

此处为选择路径,点击按钮即可调用windows资源管理器选择文件,并接收文件路径,可以选择单个,多个文件,还可以选择整个目录

tk_mp3_3.png

这是点击修改的事件,在这个函数里,获取用户填入的mp3地址和艺人,专辑,封面等信息,然后做一些判断,阻止出错,比如用户是否填信息,是否是多个文件路径,或者上传了非mp3文件等,

然后调用mp3的处理文件的函数,根据字段值判断应该调用对字段修改的函数还是封面处理的函数

tk_mp3_4.png

mp3处理函数

这个就是处理mp3的文件

tk_mp3_5.png

在ui.py文件的import底下写一个函数,让print重定向输出到这个文本框组件中

tk_mp3_6.png

部件优化(重定向输出和超链接)

然后在这个文本框函数中调用重定向函数,此时,print将在这个文本框中输出

tk_mp3_7.png

然后在ui.py中找到顶部文本框,添加文本,展示告示,将 我的博客 标记为 link,然后对link标记设置蓝色和下划线, 并设置 text.config(state='disabled') ,作用是在此之后不可以对此文本框进行编辑了,一定要在text.insert之后再写text.config(state='disabled') ,否则就不会展示text.insert的文本

tk_mp3_8.png

然后使用tag_bind将标记为link的文本绑定open_link

tk_mp3_88.png

在control.py文件中编写open_link函数,定义事件,打开网站

tk_mp3_888.png

最终就是这个样子

tk_mp3_9.png

打包之后的问题

使用 pyinstaller -i music.ico -w -F main.py 打包之后呢,可能会出现两个问题

第一个问题

打包之后exe文件的图标 就是这个 music.ico,有时能显示,有时不能显示

tk_mp3_18.png

这是因为在电脑上比如桌面上鼠标右键查看,有大图标,中图标,小图标等,就需要这个ico图标里有不停尺寸的图标

可以在这个网站上制作

https://www.aconvert.com/cn/icon/

tk_mp3_11.png

制作好的icon图片,是包含不同尺寸的

tk_mp3_12.png

然后打包的时候, pyinstaller -i 后面使用这个ico就可以了

第二个问题

tk的ui界面的左上角的图标,在打包运行之后,找不到tk的左上角的图标文件

这是代码:

tk_mp3_14.png

这是从pycharm里直接运行

tk_mp3_13.png

这是打包之后:

tk_mp3_10.png

如果想解决这个问题也可以,根据路径,如果是相对路径,比如我这个,我只需要在exe文件同一文件夹下放一个cs.ico就可以了,但是exe移动或者分享给别人,那还需要把图标也跟着移动,很麻烦
所以使用下面这种办法

读取ico,然后二进制读出转为base64写入到py文件中

tk_mp3_15.png

然后在设置图标的时候,先打开一个ico文件,

导入py文件中的base64数据

from cs import img

读出之前ico的base64格式的数据,再写入到这个ico文件中

然后设置图标,再删除图标

tk_mp3_16.png

这样的话,只需要把ico图标的base64的数据存储到一个py文件中,然后正常打包运行,程序在设置图标的时候,就会将这个py文件中的base64的数据生成一个ico文件,作为图标

打包

接下来在使用pyinstaller进行打包

pyinstaller -i music.ico -w -F main.py 

运行展示

tk_mp3_17.png

3

评论区