↑ 关注 + 星标 ,每天学Python新技能后台回复【大礼包】送你Python自学大礼

来源丨速学Python

https://mp.weixin.qq.com/s/C9doSoz0uHn2VAApBuGsNg

本节将教大家如何做一个简单的mp3,希望大家能有所收获,写的不足之处望大家谅解。

废话少说,直接上代码:

#!/usr/bin/env python# -*- coding: utf-8 -*-import pygameimport osfrom tkinter import *root = Tk()root.title('老婆专用播放器')root.geometry('800x600')pygame.init()music_path = r'C:\Users\zlcao\Music'current_play = 'R3hab - Skydrop (Radio Edit).mp3'music_name = StringVar()def play(): music_name.set(current_play) pygame.mixer.music.load(os.path.join(music_path, current_play)) pygame.mixer.music.play()Label(root, textvariable=music_name, font=('宋体', 14), justify='center', bg='#ADD8E6').place(relx=0, rely=0.1, relwidth=1, relheight=0.3)Button(root, text="播放", command=play).place(relx=0, rely=0.5, relwidth=0.2, relheight=0.1)Button(root, text="暂停", command=lambda: pygame.mixer.music.pause()).place(relx=0.2, rely=0.5, relwidth=0.2, relheight=0.1)Button(root, text="恢复", command=lambda: pygame.mixer.music.unpause()).place(relx=0.4, rely=0.5, relwidth=0.2, relheight=0.1)Button(root, text="停止", command=lambda: pygame.mixer.music.stop()).place(relx=0.6, rely=0.5, relwidth=0.2, relheight=0.1)Button(root, text="重播", command=lambda: pygame.mixer.music.rewind()).place(relx=0.8, rely=0.5, relwidth=0.2, relheight=0.1)root.mainloop()

代码运行效果

先吐槽一下,代码没有粘贴出应有的效果,不知道是不是我使用的姿势不对。

首先我们使用pygame库来支持音频处理,pygame是python的一个游戏库,有兴趣的童鞋可以了解一下。

pygame.init() 意思是初始化所有导入的pygame模块

music_name = StringVar() 这句话声明了一个StringVar对象,他配合Label, Button的textvarable属性来实现变量更新,界面显示字符更新的功能。

pygame.mixer.music.load(os.path.join(music_path, current_play))

加载一个音频文件

 pygame.mixer.music.play()

播放加载的音频文件

Label(root, textvariable=music_name, font=('宋体', 14), justify='center', bg='#ADD8E6').place(relx=0, rely=0.1, relwidth=1, relheight=0.3)

加载一个Label控件,该label控件的文字受StingVar类型的变量music_name 控制,可以通过music_name.set() 来改变label显示的文字。font=('宋体', 14) 指定label控件的字体为宋体,字体大小为14号。justify属性用来设置label控件的对齐方式,bg 是background的缩写,指定label控件的背景色,如果要设置字体颜色,可以使用fg(foreground),用法同bg一样。

place是tk 的一种布局方式, tkinter共有三种布局方式,pack, grid, place

relx和rely是相对父控件的位置。0是最左边,0.5是正中间,1是最右边

relwidth, relheight是相对父控件的大小。例如 relwidth=0.1相当于父控件宽度的0.1倍。

lambda是匿名函数,如果一个函数不想命名又没有复杂的功能的情况下,可以使用匿名函 数,可以让代码更为简洁。如何理解lambda呢,我举个例子。

比如func = lambda x: x+1 等同于

def func(x): return(x+1)

x是入参,x+1是函数体里的执行语句并返回结果。

有些人可能会说,这些我都懂了,我如何能丰富我的界面功能了,这个也太简陋了

low

这里我搜集了一些给大家提供一些参考

pygame.mixer.music.load() —— 载入一个音乐文件用于播放pygame.mixer.music.play() —— 开始播放音乐流pygame.mixer.music.rewind() —— 重新开始播放音乐pygame.mixer.music.stop() —— 结束音乐播放pygame.mixer.music.pause() —— 暂停音乐播放pygame.mixer.music.unpause() —— 恢复音乐播放pygame.mixer.music.fadeout() —— 淡出的效果结束音乐播放pygame.mixer.music.set_volume() —— 设置音量pygame.mixer.music.get_volume() —— 获取音量pygame.mixer.music.get_busy() —— 检查是否正在播放音乐pygame.mixer.music.set_pos() —— 设置播放的位置pygame.mixer.music.get_pos() —— 获取播放的位置pygame.mixer.music.queue() —— 将一个音乐文件放入队列中,并排在当前播放的音乐之后pygame.mixer.music.set_endevent() —— 当播放结束时发出一个事件pygame.mixer.music.get_endevent() —— 获取播放结束时发送的事件

大家可以在我这个程序的基础上继续完善和改进,可以添加上一首下一首功能,也可以添加播放列表(treeview去做),感兴趣的童鞋可以加我讨论,一定知无不言言无不尽。最后通过pyinstaller打包成exe就好了,具体打包方法大家可以自行探索,另外希望大家多多支持。

------end------
推荐阅读

再见,VS Code !你好,GitHub!

这款网络排查工具,堪称神器!

我的天!思科前员工删库跑路,损失达 1600 多万

高中生写LOL外挂1年狂赚500万,落网前刚买百万保时捷...

神器DeskGo!

破解TA朋友圈“仅三天可见”

如何掌握Python,一举拿下大厂的高薪offer呢?

推荐我的微信号


来围观我的朋友圈,我的经验分享,技术更新,不定期送书,坑位有限,速速扫码添加
备注:
开发方向_昵称_城市,另送你10本Python电子书,

在看点这里好文分享给更多人↓↓

python没有pygame_教程丨python 做一个简单的MP3相关推荐

  1. python爬虫入门教程(二):开始一个简单的爬虫

    2019/10/28更新 使用Python3,而不再是Python2 转载请注明出处:https://blog.csdn.net/aaronjny/article/details/77945329 爬 ...

  2. extjs 在textfield后面加一个button_用python 做一个简单的MP3

    本节将教大家如何做一个简单的mp3,希望大家能有所收获,写的不足之处望大家谅解. 废话少说,直接上代码: #!/usr/bin/env python # -*- coding: utf-8 -*- i ...

  3. python七彩同心圆_用pygame做一个简单的python小游戏---七彩同心圆

    用pygame做一个简单的python小游戏---七彩同心圆 用pygame做一个简单的python小游戏-七彩同心圆 这个小游戏原是我同学python课的课后作业,并不是很难,就简单实现了一下,顺便 ...

  4. python 搭建登陆系统,用Python连接操作MySQL数据库,做一个简单的用户登录注册系统...

    我们可以很容易地用Python实现一个用户登录系统,相信这即使是对编程新手来说也是小菜一碟. 作为Python的小萌新,今天我想记录下来的是如何实现一个连接了MySQL数据库的用户登录注册系统,它的效 ...

  5. Python开发——做一个简单的【表白墙】网站

    前言 大家早好.午好.晚好吖 ❤ ~ 今天我们要用Python做Web开发,做一个简单的[表白墙]网站. 众所周知表白墙的功能普遍更多的是发布找人,失物招领, 还是一个大家可以跟自己喜欢的人公开表白的 ...

  6. 【Python】如何用python做一个简单的输入输出交互界面?

    看到知乎上有人在问,如何使用Python做一个简单的输入输出交互界面? 交互界面就涉及到GUI编程. Python有很多GUI框架,功能大同小异. 其中比较出名的有「PyQT」.**wxPython. ...

  7. python自己做个定时器_技术图文:如何利用 Python 做一个简单的定时器类?

    原标题:技术图文:如何利用 Python 做一个简单的定时器类? 背景 今天在B站上看有关 Python 最火的一个教学视频 -- "零基础入门学习 Python",这也是我们 P ...

  8. python字节码执行函数_做一个字节码追踪器,从内部理解 Python 的执行过程

    最近我在研究 Python 的执行模型.我对 Python 内部的东西挺好奇,比如:类似 YIELDVALUE 和 YIELDFROM 此类操作码的实现:列表表达式.生成器表达式以及一些有趣的Pyth ...

  9. 用pygame做一个简单的python小游戏---贪吃蛇

    用pygame做一个简单的python小游戏-贪吃蛇 贪吃蛇游戏博客链接:(方法一样,语言不一样) c++贪吃蛇:https://blog.csdn.net/weixin_46791942/artic ...

  10. 用pygame做一个简单的python小游戏---七彩同心圆

    用pygame做一个简单的python小游戏-七彩同心圆 这个小游戏原是我同学python课的课后作业,并不是很难,就简单实现了一下,顺便加强一下pygame库的学习. 玩法:每次点击鼠标时,会以鼠标 ...

最新文章

  1. c++语言中,vector容器与list容器的区别和联系?_百度知道
  2. Jupyter notebook与Spyder集成
  3. 无忧技术带您预览DFS(分布式文件系统)管理控制台
  4. 加强IIS安全机制 建立高安全性能Web服务器
  5. 虚拟机中mysql-cobar安装_cobar配置安装
  6. SAP Spartacus delivery mode页面Cannot find control with的错误消息
  7. 跟我一起学Redis之Redis配置文件啃了一遍之后,从尴尬变得有底气了(总结了一张思维图)...
  8. 史上最详细Windows版本搭建安装React Native环境配置
  9. Redis文档阅读笔记-Pub/Sub官方解析
  10. sql server的密码采用自带什么密码技术存储_【技术分享】浅谈MYSQL 8.0新特性
  11. 网易财报暗藏玄机,不经意间已编织出电商大网
  12. 每次发工资条,同事都要随意传看,怎么解决这个问题?
  13. python成功之路,Day1-发展历史
  14. 大数据分析有几种方法
  15. (第十一周)规格说明书练习作业——吉林市一日游
  16. CVE-2020-10148: SolarWinds 远程代码执行漏洞通告
  17. maven [INFO] No proxies configured [INFO] No proxy was configured, downloading directly
  18. 发送邮件被退回,提示: Helo command rejected: Invalid name 错误
  19. 江苏工匠杯_easyphp_wp
  20. 博取仪器3D产品配置

热门文章

  1. 蓝桥杯官网 试题 PREV-278 历届真题 双向排序【第十二届】【省赛】【研究生组】【C++】【C】【Java】【Python】四种解法
  2. python数据分析论文结构_基于python数据挖掘论文_数据挖掘期末论文
  3. 斯蒂夫乔布斯传札记:第九波
  4. 动软代码生成器连不上高版本(8.0+)的解决方法
  5. ZTEBA601.android5.1,中兴Blade A601线刷刷机教程_中兴BA601线刷包_救砖刷机包
  6. 华为主题包hwt下载_华为主题开发工具
  7. Android文字图像识别并翻译的简单实现
  8. 【游戏引擎Easy2D】第一个引擎程序
  9. 浪潮服务器风扇转速调节(已解决)
  10. 数据库系统原理课程设计