Python 技术篇-pygame库实现播放音乐,带漂亮小界面!
时间:2022-07-25
本文章向大家介绍Python 技术篇-pygame库实现播放音乐,带漂亮小界面!,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
pygame库用来做游戏的,也常用来播放音乐。
用pip install pygame
来安装pygame库
因为pygame是用来做游戏的,所以界面是必须的,如果想要播放歌曲一定要有这段代码:pygame.display.set_mode()
打开界面。
import pygame
# 初始化
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load('封茗囧菌 - 安娜的橱窗.mp3') # 加载歌曲
pygame.mixer.music.play() # 播放
pygame.display.set_mode([300,300])
# 设置打开界面的关闭方法,没有的话打开的界面没法关闭。
while 1:
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()
方法pygame.mixer.music.play(loops,start)
两个参数可以设置循环次数和开始位置,loops取整数,loops是无限循环,start的参数范围0到1。
方法pygame.mixer.music.stop()
可以让音乐停止。
方法pygame.mixer.music.set_volume()
可以用来设置声音大小,参数范围0到1。
上面简单的简短代码是介绍如何播放音乐,下面为大家展示漂亮小界面的制作。 我们界面的背景取的就是音乐的封面图片。
先来张效果图。
这篇文章 ,Python 技术篇-用mutagen库提取MP3歌曲图片,介绍了怎么获取歌曲的信息,有兴趣的同学可以了解下。
mutagen库实现获取歌曲信息。 PIL库实现图片尺寸转化。
import pygame
import mutagen
from PIL import Image
# 获取歌曲图片并保存
inf = mutagen.File('封茗囧菌 - 安娜的橱窗.mp3')
artwork = inf.tags['APIC:'].data # 获取歌曲封面图片
title = inf.tags["TIT2"].text[0] # 获取歌曲名
pic = title + '.jpg' # pic用于存储图片的名字
with open(pic, 'wb') as img:
img.write(artwork)
# 播放音乐
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load('封茗囧菌 - 安娜的橱窗.mp3')
pygame.mixer.music.play(loops=0,start=0)
screen=pygame.display.set_mode([300,300])
# 转化图片尺寸并保存
img_switch = Image.open(pic)
img_deal = img_switch.resize((300,300),Image.ANTIALIAS)
img_deal = img_deal.convert('RGB')
img_deal.save(pic)
# 用于把图片存放到pygame的界面中
img = pygame.image.load(pic)
screen.blit(img,(0,0))
pygame.display.update()
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
下面展示原歌曲和中间用到的图片。
- winform CheckedListBox实现全选/全不选
- 机器学习该如何入门
- dedecms建的网站如何去掉/index.html
- WPF ContextMenu的使用
- Json的序列化与反序列化以及乱入的k_BackingField
- 亚马逊面试题
- VisualStudio 怎么使用Visual Leak Detector
- Cannot find module 'socket.io'
- 【学术】独热编码如何在Python中排列数据?
- 比特币的私钥【区块链生存训练】
- Unity3D学习笔记第一课
- Extjs4处理后台json数据中日期和时间的方法
- 机器学习:Python测试线性可分性的方法
- Java 机器学习库Smile实战(一)SVM
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Run和Start的区别,线程的生命周期,优先级,礼让和守护线程
- RestFul 风格操作文档
- DOM的核心总结
- 移动端WEB开发之响应式布局
- css基础选择器
- CSS外观属性
- serverless 部署egg的layer组件,整个node_modules上传报错
- HTML标签
- 给IMX6ULL编译鸿蒙Liteos-a
- 鸿蒙源码下载并编译
- g2o、Eigen、Mat矩阵类型转换
- 相见恨晚!OLAP数仓基础入门大全
- Activiti7 流程变量(UEL-Value方式)
- 给IE9及其以下等不支持classList属性的浏览器,添加classList属性
- Docker使用手册 嵌入式Linux环境搭建