MusicPlayer2.1版本
MusicPlayer2.0版本
python小制作 tkinter 简单音乐播放器_死非死的博客-CSDN博客
感觉自己在挤牙膏,水文章,但是确确实实改变了啊,而且这是两天分别改滴
本次修改
1.上次提到的name参数问题
2.那个可以被淘汰掉的 player()函数
3. put_up 函数改成了类方法
至于 类减负,没有; 随机播放,没有; 随机壁纸,还是没有, 噫~~
import os
import random
from tkinter import *from PIL import Image, ImageTk # 导入图像处理函数库
from pygame import mixerclass MyButton:def __init__(self, window): #self.window = windowself.font = ('宋体', 12)self.width = 8self.bg = '#c7e0f4'def put_button(self, text, command, x, y):Button(self.window, text=text,font=self.font, command=command,width=self.width,bg=self.bg).place(x=x, y=y)class MusicPlayer:def __init__(self, width='350', height='300'):self.width, self.height = width, heightself.num = 0self.size = 0.5self.window = Tk() # 创建一个窗口self.name = StringVar()@staticmethoddef music_list(): # 读取音乐 完善方向是加上排序功能lists = [] # music是音乐文件夹 os.listdir 打开指定文件夹获取文件夹下所有文件名称for i in os.listdir('music'):if os.path.splitext(i)[-1] == '.mp3':lists.append(i)else:passreturn listsdef put_tp(self):"""放置Label"""# self.name.set(f'{Mp.name_now()}')self.update(self.name_now())back_img = read_img(window_w, window_h)tpi1 = Label(self.window, compound=CENTER, # 用于显示当前音乐名称textvariable=self.name,image=back_img,fg='#2598cb',font=('黑体', 20))# 背景图片 在这里我将背景图片和音乐名称共用一个标签 因为没找到将标签背景透明的办法tpi1.image = back_imgtpi1.pack()def update(self, name):self.name.set(name)def name_now(self): # 当前播放音乐名称name1 = self.music_list()[self.num]self.update(name1)return name1def play(self): # 开始播放音乐mixer.music.set_volume(self.size)mixer.music.load(f'music/{self.name_now()}')mixer.music.play()@staticmethoddef stop(): # 音乐暂停mixer.music.pause()@staticmethoddef cancel():"""取消暂停"""mixer.music.unpause()def up(self):"""控制音乐音量 增大"""if -0.1 < self.size < 1:self.size += 0.1mixer.music.set_volume(self.size)else:self.size += 0mixer.music.set_volume(self.size)def down(self):"""控制音乐音量 降低"""if 0 < self.size < 1.1:self.size -= 0.1mixer.music.set_volume(self.size)else:self.size -= 0mixer.music.set_volume(self.size)def next(self):"""切换音乐 上一首"""mixer.music.stop()if 0 <= self.num <= len(self.music_list()) - 2:self.num += 1elif self.num >= len(self.music_list()) - 1:self.num = 0self.name_now()# self.name.set(self.name_now())self.play()def last(self):"""切换音乐 下一首"""mixer.music.stop()if 0 < self.num <= len(self.music_list()) - 1:self.num -= 1elif self.num <= 0:self.num = len(self.music_list()) - 1# self.name.set(self.name_now())self.name_now()self.play()def player_window(self, x='500', y='150'):# window_w,window_h = '350', '300' # 窗口宽窗口高mixer.init() # 初始化音乐播放器window_size = self.width + 'x' + self.heightwindow_p = f"+{x}+{y}" # 窗口出现的位置self.window.title('赵某的音乐播放器') # 标题self.window.geometry(window_size + window_p) # 窗口的大小 以及位置 放置窗口# 设定窗口是否可以缩放,以及缩放范围# name = StringVar()self.window.resizable(width=False, height=False)self.put_tp()def buttons(mp):"""按钮总部"""text = ['播放', '暂停', '继续播放', '上一首', '下一首', '音量+', '音量-']bottom_num = len(text)button1 = MyButton(mp.window)command = [mp.play, mp.stop, mp.cancel,mp.next,mp.last, mp.up,mp.down]x = list(range(20, 221, 80)) + list(range(20, 301, 80))y = list(range(200, 241, 40))for i in range(bottom_num):if i < 3:button1.put_button(text=text[i], command=command[i], x=x[i], y=y[0])else:button1.put_button(text=text[i], command=command[i], x=x[i], y=y[1])def read_img(width, height):img_list = os.listdir('壁纸')img_num = random.randint(0, len(img_list) - 1)img = ImageTk.PhotoImage(Image.open(f'壁纸/{img_list[img_num]}').resize((int(width), int(height))))return imgif __name__ == "__main__":window_w, window_h = '350', '300' # 窗口宽窗口高Mp = MusicPlayer(window_w, window_h)Mp.player_window()buttons(Mp) # 调用上方函数 ,放置按钮Mp.window.mainloop()# 还希望加上顺序播放,单曲循环 ,随机播放# 总之,这是个简单的练手作品
MusicPlayer2.1版本相关推荐
- python小制作 tkinter 简单音乐播放器
MusicPlayer2.1版本_死非死的博客-CSDN博客 ------------------------------------------------------------------ 这是 ...
- 拉勾教育 | Java 性能优化实战 21 讲
开篇词 开篇词 | Java 性能优化,是进阶高级架构师的炼金石 你好,我是李国.作为<Java 性能优化与面试 21 讲>这个课程的作者,我先来简单介绍下自己. 我曾任京东金融.陌陌科技 ...
- gcc 自动识别的文件扩展名,gcc/g++ -x 选项指定语言,不同 gcc 版本 -std 编译选项支持列表
对于执行 C 或者 C++ 程序,需要借助 gcc(g++)指令来调用 GCC 编译器. 对于以 .c 为扩展名的文件,GCC 会自动将其视为 C 源代码文件 对于以 .cpp 为扩展名的文件,GCC ...
- 多版本python共存,安装三方库到指定python版本 多Python版本和虚拟环境
多个Python版本:在同一台机器上安装不同的Python,例如2.7和3.4. 虚拟环境:独立的环境,既可以同时安装特定版本的Python,也可以安装任何特定于项目的软件包,而不会影响任何其他项目. ...
- virtualenv创建虚拟环境为主_多版本
20210821 指定python版本安装 20201223 进入虚拟环境之后 如果在其他虚拟环境的目录下 则会首先找到 其他环境的pip 并列出软件版本 如果要查看当前真实环境的情况 用下面的命令 ...
- windows下多版本python安装与pip安装和pip使用 吐血总结
https://blog.csdn.net/silence2015/article/details/56483892/ 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附 ...
- Python多版本pip安装库的问题
引 机器上总是会有Python2.7的版本和Python3.x的版本,今天接触到一台服务器上面有Python2.7和Python3.4,想在Python3.4下安装一个TensorFlow,但不管怎么 ...
- 禁用GPU版本TensorFlow,切换到CPU版本TensorFlow。
#禁用gpu版本TensorFlow,因为CUDA号码从0开始,这里直接让CUDA使用-1的GPU,自然就无法使用gpu了. 代码前面加入: import os os.environ["CU ...
- 安装win下的Anaconda ----针对python3.6.4版本
我的python版本是3.6.4, Anaconda下载地址: Anaconda官网:https://repo.anaconda.com/archive/ 清华大学镜像站:https://mirror ...
最新文章
- Js弹性漂浮广告代码
- linux mrtg 进程名称,Linux上的MRTG流量监控中心
- (转)千万别熬夜:身体器官晚上工作时间表一览
- ssh 与 locale
- Android设计模式之——责任链模式
- 解密:90后程序员青睐哪些互联网公司?
- Redis:分布式锁Watch
- JS 继承各种方法的优劣比较 ----JS 学习笔记(五)
- ORACLE异常(整理网上资料)
- php Immutable,Immutable.js详解
- spring揭秘 读书笔记 六 bean的一生
- C++/CLI学习入门
- 字符串通配符(递归)
- [读书] 《未来世界的幸存者》关于熵减的心得
- NBIOT BC26 opencpu物联网应用案例详细解析
- Android4.2开发项目教程 Android4.2开发手机新闻移动客户端视频
- python绘图坐横坐标轴显示
- 请教下uniapp 打包分享提示签名不对 检查与微信开放平台签名是否一致 这个怎么解决
- H323测试---安装GNUG服务器
- c语言-存款利率计算器v2.0