对于音频的操作可以使用pygame包中的sound 和 music对象进行音乐播放。

Sound对象适合处理较短的音乐,如OGG和WAV格式的音频文件。

Music对象出来可以播放OGG、WAV音频外,还可以播放mp3格式。

from pygame import mixer   #mixer对象可以播放音乐

一、Sound 对象

mixer.init()  先初始化

创建Sound对象

sound = mixer.Sound(音频文件名)

sound.play(loops = 0)   播放音乐,loops代表播放次数,默认为0,表示播放一次;loops=5可播放6次;loops=-1 可重复播放

sound.stop()   结束播放

sound.set_volume(value)   设置音量,音量有最低到高0.0--1.0

sound.get_volume()  获取当前的音量

二、music对象

mixer.init()  先初始化

mixer.music.load(filename)   停止正在播放的音乐,filename为歌曲的文件名

mixer.music.play(loops=0,start=0.0)   播放歌曲,loops表示播放次数,默认为0,播放1次;loops=5可以播放6次;loop=-1可以重复播放

mixer.music.stop()  停止播放

mixer.music.pause()  暂停播放

mixer.music.unpause()   用pause()暂停后,必须使用这个函数来继续播放

mixer.music.set_volume(value)  设置音量,最大1.0,最小0.0

mixer.music.get_volume()  获取当前音量

mixer.music.get_busy()  检查歌曲播放状态,True为正在播,False为不在播

 from pygame import mixer
import glob
import tkinter as tk mixer.init()
win = tk.Tk()
win.geometry("640x380")
win.title("mp3 播放器") labeltitle = tk.Label(win,text='mp3 播放器',fg = 'red')
labeltitle.pack() framel = tk.Frame(win)
framel.pack() musicList = glob.glob('*.mp3') playSong = preplaySone = ''
index = 0
volume = 0.6
choice = tk.StringVar() def choose():
global playSong
msg.set("播放歌曲:"+choice.get())
playSong = choice.get() def playMp3():
global status,playSong,preplaySone
if playSong == preplaySone:
if not mixer.music.get_busy():
mixer.music.load(playSong)
mixer.music.play(loops = -1)
else:
mixer.music.pause()
else:
playNewSong()
preplaySone = playSong def playNewSong():
global playSong
mixer.music.stop()
mixer.music.load(playSong)
mixer.music.play(loops = -1)
msg.set("正在播放:{}".format(playSong)) def pauseMp3():
mixer.music.pause()
msg.set("暂停歌曲:{}".format(playSong)) def increase():
global volume
volume += 0.1
if volume >=1:
volume = 1
mixer.music.set_volume(volume) def decrease():
global volume
volume -= 0.1
if volume <= 0.1:
volume = 0.1
mixer.music.set_volume(volume) def stopMp3():
mixer.music.stop()
msg.set("\n停止播放") def exitMp3():
mixer.music.stop()
win.destroy() for music in musicList:
rbtem = tk.Radiobutton(framel,text=music,variable = choice,value=music,command=choose)
if index == 0:
rbtem.select()
playSong = preplaySone = music
rbtem.grid(row = index,column = 0,sticky = 'w')
index += 1 msg = tk.StringVar()
msg.set("\n播放歌曲:"+playSong)
label = tk.Label(win,textvariable=msg,fg='blue')
label.pack() labelsep = tk.Label(win,text='\n')
labelsep.pack() frame2 = tk.Frame(win)
frame2.pack() button1 = tk.Button(frame2,text='播放',width=8,command = playMp3)
button1.grid(row=0,column=0,padx=5,pady=5) button2 = tk.Button(frame2,text='暂停',width=8,command = pauseMp3)
button2.grid(row=0,column=1,padx=5,pady=5) button3 = tk.Button(frame2,text='音量调大',width=8,command = increase)
button3.grid(row=0,column=2,padx=5,pady=5) button4 = tk.Button(frame2,text='音量调小',width=8,command = decrease)
button4.grid(row=0,column=3,padx=5,pady=5) button5 = tk.Button(frame2,text='停止',width=8,command = stopMp3)
button5.grid(row=0,column=4,padx=5,pady=5) button6 = tk.Button(frame2,text='结束',width=8,command = exitMp3)
button6.grid(row=0,column=5,padx=5,pady=5) win.protocol("WM_DELETE_WINDOW",exitMp3)
win.mainloop()
#print(musicList)

Python加载声音的更多相关文章

  1. Selenium3+python 加载Firefox配置

    有小伙伴在用脚本启动浏览器时候发现原来下载的插件不见了,无法用firebug在打开的页面上继续定位页面元素,调试起来不方便 . 加载浏览器配置,需要用FirefoxProfile(profile_di ...

  2. as3.0 当fla里面有TLF文本的时候,加载声音会出现错误

    问题描述 1.现有制作好的mp3加载包,这个包是相对路径 2.如果fla里面没有TLF文本,可以正常运行 解题思路 1.音频的相对路径和加载TLF文本的路径不一样,fla会优先选择TLF文件,这样mp ...

  3. python加载csv数据

    入门机器学习时,一些测试数据是网络上的csv文件.这里总结了两种加载csv文件的方式: 1 通过numpy.urllib2加载 import numpy as np import urllib2 ur ...

  4. Python 加载mnist、cifar数据

    import tensorflow.examples.tutorials.mnist.input_data mnist = input_data.read_data_sets("MNIST_ ...

  5. python加载json文件

    主要是加载进来,之后就没难度了 import json path = 'predict2.json' file = open(path, "rb") fileJson = json ...

  6. python加载sqlite3报错:No module named _sqlite3

    环境为Ubuntu16.04 Apache2.4 Python2.7.13 django 1.8 今天部署apache+django,经过各种折腾,好不容易配置完了,发现错误Apache的日志里有一项 ...

  7. vs2015利用python加载dll调试配置

    python调用dll相对而言比较方便,写个脚本调试轻松工作,快乐生活. python脚本 from ctypes import * import time # 脚本挂起 input() # load ...

  8. python加载和使用java的类的方法

    在开发python项目的时候,有时候会用的java的jar包 有这么几个python的三方包可以用: pyjnius:bug list:https://github.com/kivy/pyjnius/ ...

  9. python加载不了cookirlib模块的问题

    Python 3 改成 http.cookiejar了,所以import cookielib只要改成import http.cookiejar,就可以了.

随机推荐

  1. SpringBoot之整合Mybatis范例

    依赖包: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http:/ ...

  2. 二、kubernetes环境搭建

    主要内容 1.环境准备(2主机) 2.安装流程 3.问题分析 4.总结 环境配置(2主机) 系统:CentOS 7.3 x64 网络:局域网(VPC) 主机: master:172.16.0.17 m ...

  3. Lodop“对象不支持SET__LICENSES属性或方法”SET__LICENSES is not a function”

    Lodop中的方法如果书写错误,就会报错:“对象不支持XXX属性或方法”调试JS会报错”SET__LICENSES is not a function” LODOP.SET_LICENSES是加注册语 ...

  4. 微软已发布 Windows 10 Timeline 功能的官方 Chrome 插件

    微软已发布 Windows 10 Timeline 功能的官方 Chrome 插件,这个插件名为 Web Activities,功能是跨 Windows 10 和 Microsoft Launcher ...

  5. Python Argparse模块

    argparse模块 在Python中,argparse模块是标准库中用来解析命令行参数的模块,用来替代已经过时的optparse模块.argparse模块能够根据程序中的定义从sys.argv中解析 ...

  6. 进程间的通讯————IPC

    """ IPC 指的是进程间通讯 之所以开启子进程 肯定需要它帮我们完成任务 很多情况下 需要将数据返回给父进程 然而 进程内存是物理隔离的 解决方案: 1.将共享数据放 ...

  7. 【AGC014E】Blue and Red Tree 并查集 启发式合并

    题目描述 有一棵\(n\)个点的树,最开始所有边都是蓝边.每次你可以选择一条全是蓝边的路径,删掉其中一条,再把这两个端点之间连一条红边.再给你一棵树,这棵树的所有边都是红边,问你最终能不能把原来的树变 ...

  8. JPQL的关联查询

    一般情况下,直接使用mysql语句写关联语句,是join on 的形式,如下: select * from tablea as a left join tableb as b on b.tablea_ ...

  9. crawlspider_房多多

    框架写起来代码是真的简洁多了,还有就是在requests爬取房多多的时候,无法爬取所有地区,而这个就不受影响 代码请查看码云 运行结果:

  10. Leetcode 80.删除排序数组中的重复项 II By Python

    给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示例 ...