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版本相关推荐

  1. python小制作 tkinter 简单音乐播放器

    MusicPlayer2.1版本_死非死的博客-CSDN博客 ------------------------------------------------------------------ 这是 ...

  2. 拉勾教育 | Java 性能优化实战 21 讲

    开篇词 开篇词 | Java 性能优化,是进阶高级架构师的炼金石 你好,我是李国.作为<Java 性能优化与面试 21 讲>这个课程的作者,我先来简单介绍下自己. 我曾任京东金融.陌陌科技 ...

  3. gcc 自动识别的文件扩展名,gcc/g++ -x 选项指定语言,不同 gcc 版本 -std 编译选项支持列表

    对于执行 C 或者 C++ 程序,需要借助 gcc(g++)指令来调用 GCC 编译器. 对于以 .c 为扩展名的文件,GCC 会自动将其视为 C 源代码文件 对于以 .cpp 为扩展名的文件,GCC ...

  4. 多版本python共存,安装三方库到指定python版本 多Python版本和虚拟环境

    多个Python版本:在同一台机器上安装不同的Python,例如2.7和3.4. 虚拟环境:独立的环境,既可以同时安装特定版本的Python,也可以安装任何特定于项目的软件包,而不会影响任何其他项目. ...

  5. virtualenv创建虚拟环境为主_多版本

    20210821 指定python版本安装 20201223 进入虚拟环境之后 如果在其他虚拟环境的目录下 则会首先找到 其他环境的pip 并列出软件版本 如果要查看当前真实环境的情况 用下面的命令 ...

  6. windows下多版本python安装与pip安装和pip使用 吐血总结

    https://blog.csdn.net/silence2015/article/details/56483892/ 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附 ...

  7. Python多版本pip安装库的问题

    引 机器上总是会有Python2.7的版本和Python3.x的版本,今天接触到一台服务器上面有Python2.7和Python3.4,想在Python3.4下安装一个TensorFlow,但不管怎么 ...

  8. 禁用GPU版本TensorFlow,切换到CPU版本TensorFlow。

    #禁用gpu版本TensorFlow,因为CUDA号码从0开始,这里直接让CUDA使用-1的GPU,自然就无法使用gpu了. 代码前面加入: import os os.environ["CU ...

  9. 安装win下的Anaconda ----针对python3.6.4版本

    我的python版本是3.6.4, Anaconda下载地址: Anaconda官网:https://repo.anaconda.com/archive/ 清华大学镜像站:https://mirror ...

最新文章

  1. Js弹性漂浮广告代码
  2. linux mrtg 进程名称,Linux上的MRTG流量监控中心
  3. (转)千万别熬夜:身体器官晚上工作时间表一览
  4. ssh 与 locale
  5. Android设计模式之——责任链模式
  6. 解密:90后程序员青睐哪些互联网公司?
  7. Redis:分布式锁Watch
  8. JS 继承各种方法的优劣比较 ----JS 学习笔记(五)
  9. ORACLE异常(整理网上资料)
  10. php Immutable,Immutable.js详解
  11. spring揭秘 读书笔记 六 bean的一生
  12. C++/CLI学习入门
  13. 字符串通配符(递归)
  14. [读书] 《未来世界的幸存者》关于熵减的心得
  15. NBIOT BC26 opencpu物联网应用案例详细解析
  16. Android4.2开发项目教程 Android4.2开发手机新闻移动客户端视频
  17. python绘图坐横坐标轴显示
  18. 请教下uniapp 打包分享提示签名不对 检查与微信开放平台签名是否一致 这个怎么解决
  19. H323测试---安装GNUG服务器
  20. c语言-存款利率计算器v2.0

热门文章

  1. 学习LabVIEW应看的几本书
  2. 时代管理 日企人力资源规章制度汇总
  3. 74-十进制转换为十六进制
  4. 单片机实验----跑马灯
  5. 数据结构-链表及相关算法
  6. Java script 教程
  7. 物理尺度上将计算机网络划分为,从物理尺度上将计算机网络划分为广域网WAN、城域网MAN和局域网LAN。( )...
  8. 分布式系统服务注册与发现概念和原理
  9. PTA 空心字母金字塔
  10. C/S架构的应用程序开发实战(一)