今天整理了以前的python作业代码,发现了一些有趣的小东西,比如下面这个,大概70行代码制作一款简易的音乐播放器。

install some packages

pip install pygame

pygame是跨平台Python模块,专为电子游戏设计,包含图像、声音。

我这里主要用到了pygame来播放音乐。pygame播放音乐有两个方法,比如

music_one = pygame.mixer.Sound("test.mp3")

music_one.set_volume(0.05)

music_one.play()

pygame.mixer.music.load('test.mp3')

pygame.mixer.music.set_volume(0.05)

pygame.mixer.music.play()

进群:960410445

单就实现效果而言,上面两种方式是一样的,细微的差别在于,pygame.mixer.Sound()

有返回值而pygame.mixer.music.load()没有,假如我们在一个程序中需要在不同场景播放不同音乐,甚至可能是同时播放的,就不能用pygame.mixer.music.load(),因为它类似于一个全局变量(这或许也是它不用返回的原因吧),后一次加载会覆盖前一次加载,所以它适合播放背景音乐。而pygame.mixer.Sound()有返回值,我们可以通过把它赋值给一个变量,在需要播放音乐的场景使用变量名.play()就能立刻播放。

有关pygame更多的使用,比如play()函数的参数设置,请参考pygame官方教程

pip install wxPython

python的gui编程比较基础的库,就不多说了。

Source codes

# -*- coding: utf-8 -*-

# author: inpurer(月小水长)

# pc_type lenovo

# create_date: 2018/12/1

# file_name: test.py

# description: 月小水长,热血未凉

import os

import pygame

import random

import wx

musicUrlList = []

#加载工作目录下的所有.mp3文件

def musicUrlLoader():

fileList = os.listdir(".")

for filename in fileList:

if filename.endswith(".mp3"):

print("找到音频文件",filename)

musicUrlList.append(filename)

class MyMusicPlayer(wx.Frame):

def __init__(self,superion):

wx.Frame.__init__(self,parent = superion, title = 'Xinspurer Player',size = (400,300))

musicUrlLoader()

MainPanel = wx.Panel(self)

MainPanel.SetBackgroundColour('pink')

self.ShowInfoText = wx.StaticText(parent = MainPanel, label = '播放未开始', pos = (100,100)

,size = (185,25),style = wx.ALIGN_CENTER_VERTICAL)

self.ShowInfoText.SetBackgroundColour('white')

self.isPaused = False #是否被暂停

self.StartPlayButton = wx.Button(parent = MainPanel, label = '随机播放', pos = (100,150))

self.Bind(wx.EVT_BUTTON, self.OnStartClicked, self.StartPlayButton)

self.PauseOrContinueButton = wx.Button(parent = MainPanel, label = '暂停播放', pos = (200,150))

self.Bind(wx.EVT_BUTTON, self.OnPauseOrContinueClicked, self.PauseOrContinueButton)

self.PauseOrContinueButton.Enable(False)

pygame.mixer.init()

def OnStartClicked(self,event):

self.isPaused = False

self.PauseOrContinueButton.Enable(True)

self.willPlayMusic = random.choice(musicUrlList)

pygame.mixer.music.load(self.willPlayMusic.encode())

pygame.mixer.music.play()

self.ShowInfoText.SetLabel("当前播放:"+self.willPlayMusic)

def OnPauseOrContinueClicked(self,event):

if not self.isPaused:

self.isPaused = True

pygame.mixer.music.pause()

self.PauseOrContinueButton.SetLabel('继续播放')

self.ShowInfoText.SetLabel('播放已暂停')

else:

self.isPaused = False

pygame.mixer.music.unpause()

self.PauseOrContinueButton.SetLabel('暂停播放')

self.ShowInfoText.SetLabel("当前播放:" + self.willPlayMusic)

if __name__ == "__main__":

app = wx.App()

myMusicPlayer = MyMusicPlayer(None)

myMusicPlayer.Show()

app.MainLoop()

需要注意的是,运行代码,需要在当前目录上放几首.mp3歌曲。

python如何自制音乐软件_70行python代码制作一款简易的音乐播放器!相关推荐

  1. python自动下载安装软件_30行Python代码从百度自动下载图片(内附源码和exe程序)...

    只需要30行代码就可以从百度自动下载图片 大家好,我是行哥,一个专门教小学生撸Python的编程老师(小学生都能学会的编程) 这里行哥想问大家三个问题 : - 你还在为批量下载表情包发愁吗? - 你还 ...

  2. python壁纸数据抓取_70行python代码实现壁纸批量下载

    注意:本文所属项目仅用于python学习,严禁作为其他用途使用! 初始化项目 项目使用了virtualenv来创建一个虚拟环境,避免污染全局.使用pip3直接下载即可: pip3 install vi ...

  3. python实现p图软件_10行Python代码实现美图秀秀

    美图秀秀相信大家都不陌生,大家只要操作美图秀秀,就可以P掉图片中脸上的一些瑕疵,让人变得更加的美丽.今天小编就带领大家来借助Python和Flask来实现一个美图秀秀的网页设计,大家只需要通过网页上传 ...

  4. python写音乐播放器_AJ Kipper:用Python写一个简易的MP3播放器

    用Python写一个简易的MP3播放器 前言 最近在学习Web.py框架的时候,了解了基本的Python连接数据库(MySQL)的方法.学完后,总想用它来干点啥,于是,就想能不能写一个MP3播放器.一 ...

  5. 再见,360浏览器!我用60行Python代码制作一款浏览器!

    点上方"菜鸟学Python",选择"星标" 第476篇原创干货,第一时间送达 对于日常网上冲浪的朋友们,浏览器是大家必不可少的一个工具,市面上也存在各种款式的浏 ...

  6. python程序员的浪漫-千行生日祝福代码

    python程序员的浪漫-千行生日祝福代码

  7. 小哥哥你有98K吗?利用Python制作一款多功能变声器!

    前言 好吧,关于这句小哥哥你有98K吗?出自别人口中经常说的玩笑话,我也略懂一些游戏嘛.不过不常玩,废话不多说,开始咱们今天的教程,非常简单! 利用Python制作一款多功能变声器! 咱们首先登陆百度 ...

  8. 7款高颜值HTML5播放器:让你的音乐有声有色

    原文:http://www.codeceo.com/article/7-cool-html5-player.html 这篇文章我们要分享一些很有个性的HTML5音乐播放器和视频播放器,它们都具有播放器 ...

  9. Weex 300行代码开发一款简易的跑步App

    通过Weex 300行代码开发一款简易的跑步App 2017-03-28 Weex正如它的目标, 一套构建高性能.可扩展的原生应用的跨平台开发方案 Weex 给大家带来的无疑是客户端开发效率的提升,我 ...

最新文章

  1. HDU 1004 Let the Balloon Rise
  2. java 同步方式 lock_java的两种同步方式, Synchronized与ReentrantLock的区别
  3. win7下设置无线上网
  4. iis只能访问html页面,win2003 IIS6,能访问html页 但是不能访问aspx页解决办法汇总
  5. EasyRTMP CPU占用问题调优(一)
  6. hdfs读写流程_一文读懂HDFS分布式存储框架分析
  7. mongodb插入速度每秒_MongoDB事实:商品硬件上每秒插入80000次以上
  8. K8s 学习者绝对不能错过的最全知识图谱(内含 56个知识点链接)
  9. 改ip地址会有什么影响_led显示屏会带来什么负面影响
  10. 软工网络15团队作业8——Beta阶段项目总结
  11. 框架:NHibernate学习目录
  12. mescroll.js -- 精致的下拉刷新和上拉加载js框架
  13. linux把m4s格式转换mp4,video - ffmpeg将m4s转换为mp4 - SO中文参考 - www.soinside.com
  14. 抖音用什么编程语言_抖音是哪个公司的 抖音app所属公司 是哪个公司开发的
  15. android手机能安装win10,微软或推可在安卓设备上安装的Win10系统ROM
  16. XGBoost Stopping to Avoid Overfitting(early_stopping_rounds )
  17. 上传ipa到appstore的步骤说明​
  18. echarts 官网访问慢
  19. 用java判断三角形类型_判断三角形类型
  20. Altium Designer 18PCBLogo制作

热门文章

  1. https 请求是报错No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
  2. 【02期 进阶班】阿里云”7天实践训练营“[day4]总结笔记
  3. java 装饰模式(大话设计模式)
  4. Nginx部署三台Tomcat集群详细操作步骤
  5. 毕业设计选题方向基于SSM网上美食制作推荐教程平台
  6. uV胶点胶机器人_三轴UV胶点胶机
  7. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java钟点工管理系统ve5km
  8. C#基于FFMPEG进行录制音视频(一)
  9. for..of的用法
  10. Python之日期和时间