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

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

这是另一篇音乐播放器的升级版本【MusicPlayer2.0版】,额,就是代码进行了优化,另外背景图片在打开的时候会随机

原版本【MusicPlayer 1.0版本】: tkinter 简单音乐播放器_死非死的博客-CSDN博客

当前版本:看图

之后还会升级,比如改成主动切换壁纸,添加音乐播放列表等.说着说着,突然想摆烂啊

导入相关依赖库

import os  # 读取文件用的
import random # 随机背景
from tkinter import *  窗口主体from PIL import Image, ImageTk  # 导入图像处理函数库
from pygame import mixer  # 音乐播放

建立 按钮 类

播放啊,暂停啊什么的按钮有点多,就建立一个类来进行放置

class MyButton:"""button类"""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:"""音乐播放器类"""# 真的是稍稍有点臃肿啊 ,考虑应该把个别功能移出去 比如音乐列表# 另外就是参数 name的设定,啊,有没有更好的办法,除了全局变量这种def __init__(self, width='350', height='300'):self.width, self.height = width, heightself.num = 0self.size = 0.5self.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 name_now(self):  # 当前播放音乐名称name1 = self.music_list()[self.num]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.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()) - 1self.name.set(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}"  # 窗口出现的位置window = Tk()  # 创建一个窗口window.title('赵某的音乐播放器')  # 标题window.geometry(window_size + window_p)  # 窗口的大小 以及位置 放置窗口# 设定窗口是否可以缩放,以及缩放范围name = StringVar()window.resizable(width=False, height=False)return window, name

按钮总部

def buttons(window, mp):"""按钮总部"""text = ['播放', '暂停', '继续播放', '上一首', '下一首', '音量+', '音量-']bottom_num = len(text)button1 = MyButton(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 img

播放器面板设定

def player(mp):"""播放器面板设定"""# 随着升级,这里东西越来越少,有点多余了都put_tp(mp.name)buttons(window1, mp)  # 调用上方函数 ,放置按钮

梦开始的地方 程序开始的地方

if __name__ == "__main__":window_w, window_h = '350', '300'  # 窗口宽窗口高Mp = MusicPlayer(window_w, window_h)window1, music = Mp.player_window()Mp.name = musicplayer(Mp)window1.mainloop()

python小制作 tkinter 简单音乐播放器相关推荐

  1. 简单音乐播放器的设计与实现

    简单音乐播放器的设计与实现 本文将介绍如何在Andriod Studio设计制作一个简单音乐播放器 功能说明 ​ 第二次安卓开发,所以要求相对上次而言难度稍微加大了一点.该程序实现的主要功能有上一曲, ...

  2. 【基于Python+tkinter的音乐播放器开发-哔哩哔哩】 https://b23.tv/eG2TwOL

    [基于Python+tkinter的音乐播放器开发-哔哩哔哩] https://b23.tv/eG2TwOL https://b23.tv/eG2TwOL

  3. html音频从10秒播放至30秒,基于Arduino制作SD卡音乐播放器

    一.项目介绍 前面用ATtiny85制作SD卡音乐播放器,本次主要利用Arduino UNO 和SD卡制作音乐播放器.这个播放器不需要添加多余的模块,只需要SD读卡器和Arduino UNO开发板就可 ...

  4. 简单音乐播放器html+css+基础vue+含源码,有搜索和播放mv功能,代码可直接复制用。

    题目:html+css+基础vue实现的简单音乐播放器(含源码),有搜索和播放mv功能,代码可直接复制用. 问题描述: 如果vue刚入门,掌握一些基础语法后就可以写一个简单的音乐播放器来练练手~~如果 ...

  5. java计算机毕业设计vue开发一个简单音乐播放器MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计vue开发一个简单音乐播放器MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计vue开发一个简单音乐播放器MyBatis+系统+LW文档+源码+调试部署 本源 ...

  6. JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目 ...

  7. 基于JAVAvue开发一个简单音乐播放器计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVAvue开发一个简单音乐播放器计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVAvue开发一个简单音乐播放器计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目 ...

  8. Android制作简易的音乐播放器和视频播放器

    文章目录 制作简易的音乐播放器和视频播放器 播放多媒体文件 播放音频 MediaPlayer的工作流程 项目示例 播放视频 项目示例 制作简易的音乐播放器和视频播放器 播放多媒体文件 Android在 ...

  9. Android桌面小部件AppWidget:音乐播放器桌面控制部件Widget(3)

     Android桌面小部件AppWidget:音乐播放器桌面控制部件Widget(3) Android桌面小部件AppWidget比较常用的场景就是音乐播放器,音乐播放器虽然通常在后台播放,但需要 ...

最新文章

  1. 20172329 2017-2018-2 《程序设计与数据结构》实验五报告
  2. 平时的你VS面试的你
  3. 白岩松西湖大学演讲:科研人要学会讲故事,可以从发朋友圈开始练
  4. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1114:白细胞计数
  5. 洛谷UVA1328,POJ1961-Period【KMP,字符串】
  6. [html] 你认为table的作用和优缺点是什么呢?
  7. 微软将发布新版Win10 可能以“新 Windows”之名公布
  8. MySQL巧妙利用help_topic表把以逗号分隔的字符串转换成行
  9. 目标检测中的非极大值抑制(NMS)
  10. Excel科学计数法转换成文本完整显示
  11. 常用的线性充电IC和开关充电IC的区别
  12. 计算机一级windows7操作,高校计算机一级考试指导书(Windows7+Office2010)
  13. CSDN博客去图片水印
  14. 【编程语言】Java夯实基础(一):Java的起源与发展
  15. android友盟埋点,友盟埋点详解
  16. oracle log network server,记录一次ARC1: Destination LOG_ARCHIVE_DEST_2 network reconnect abandoned解决...
  17. 过拟合与欠拟合的生动理解
  18. 从SARSA算法到Q-learning with ϵ-greedy Exploration算法
  19. 前端渲染和后端渲染,要说的都在这里?
  20. 一文简述机构资本市场中的区块链

热门文章

  1. 薪资17K是一个怎样的水平?来看看98年测试工程师的面试全过程…
  2. 外业测绘需要掌握哪些软件和技能?
  3. cordic的FPGA实现(三)sin、cos函数运算与源码分析
  4. 关于计算机二级的论文5000字,计算机二级word真题:科技论文稿排版
  5. 肌酸,支链氨基酸,谷氨酰胺都是氨基酸吗?
  6. windows下tomcat基本使用及jvm优化
  7. mac 转换root角色
  8. 第八章(无人售货机零售项目实战)
  9. 邹健写的公交车路线查询(包括转车近到远排列)。
  10. 奥林巴斯FV31S激光扫描显微镜软件下载地址