核心播放模块(pygame内核)

import time

import pygame

import easygui as gui

file = r'D:\CloudMusic\G.E.M.邓紫棋,艾热 - 光年之外 (热爱版).mp3' #这里为音乐文件路径

pygame.mixer.init()

gui.msgbox("正在播放"+file)

track = pygame.mixer.music.load(file)

pygame.mixer.music.play()

time.sleep(240)

pygame.mixer.music.stop()

完整版源代码:

import os

import tkinter

import tkinter.filedialog

import time

import threading

import pygame #实现音频播放

#第一步:搭建界面

root = tkinter.Tk()

root.title('封亚飞的音乐播放器v1.0')

#设置窗口大小和屏幕绝对位置

root.geometry('460x600+500+100')

#固定窗口大小,设置窗口不可拉伸

root.resizable(False,False)

folder = ''# 接收文件路径 默认为空

res=[]#

num=0

now_music = ''

#第二步:实现功能

def buttonChooseClick():

#添加文件函数

global folder

global res

#如果folder不为空,则····

if not folder:

folder = tkinter.filedialog.askdirectory() #选择目录,返回目录名

musics = [folder + '\\' + music

for music in os.listdir(folder)\

\

if music.endswith(('.mp3','.m4a','.wav','.ogg'))]

ret = []

for i in musics:

ret.append(i.split('\\')[1:])

res.append(i.replace("\\",'/'))

var2 = tkinter.StringVar()

var2.set(ret)

lb = tkinter.Listbox(root,listvariable=var2)

lb.place(x=50,y=220,width=260,height=300)

if not folder:

return

global playing

playing = True

#根据情况禁用或启用相应按钮

bottonPlay['state'] = 'normal'

bottonStop['state'] = 'normal'

#buttonPause['state'] = 'normal'

pause_resume.set('播放')

#播放音乐函数

def play():

#初始化混响设备

if len(res):

pygame.mixer.init()

global num

while playing:

if not pygame.mixer.music.get_busy():

#随机播放

nextMusci = res[num]

print(nextMusci)

print(num)

pygame.mixer.music.load(nextMusci.encode())

#播放一次

pygame.mixer.music.play(1)

#print(len(res)-1)

if len(res) - 1 ==num:

num=0

else:

num +=1

nextMusci = nextMusci.split("\\")[1:]

musicName.set('playing....'+''.join(nextMusci))

else:

time.sleep(0.1)

#点击播放函数

def bottonPlayClik():

bottonNext['state']='normal'

bottonPrev['state']='normal'

#选择要播放的音乐文件夹

if pause_resume.get() == '播放':

pause_resume.set('暂停')

global folder

if not folder:

#选择目录,返回目录名

folder = tkinter.filedialog.askdirectory()

if not folder:

return

global playing

playing = True

#创建一个进程来播放音乐,当前主进程用来接收用户操作

t = threading.Thread(target=play)

t.start()

elif pause_resume.get() == '暂停':

pygame.mixer.music.pause()

pause_resume.set('继续')

elif pause_resume.get()=='继续':

pygame.mixer.music.unpause()

pause_resume.set('暂停')

#停止播放函数

def bottonStopClik():

global playing

playing = False

pygame.mixer.music.stop()

#下一首函数

def bottonNextClik():

global playing

playing = False

pygame.mixer.music.stop()

global num

if len(res) == num:

num=0

playing = True

global t

t = threading.Thread(target=play)

t.start()

#上一首函数

def bottonPrevClik():

global playing

playing=False

pygame.mixer.music.stop()

global num

if num==0:

num=len(res)-2

elif num ==len(res)-1:

num-=2

else:

num-=2

print(num)

playing = True

global t

t.threading.Thread(target=play)

t.start()

#关闭窗口函数

def closeWindows():

global playing

playing=False

time.sleep(0.3)

try:

pygame.mixer.music.stop()

pygame.mixer.quit()

except:

pass

root.destroy()

#声音控制函数

def control_voice(value=0.5):

pygame.mixer.music.set_volume(float(value))

#添加按钮

bottonChoose=tkinter.Button(root,text='添加',command=buttonChooseClick)

#按钮布局

bottonChoose.place(x=50,y=50,width=50,height=20)

#播放按钮跟踪变量值的变化

pause_resume=tkinter.StringVar(root,value='播放')

bottonPlay=tkinter.Button(root,textvariable=pause_resume,command=bottonPlayClik)

#按钮布局

bottonPlay.place(x=120,y=50,width=50,height=20)

bottonPlay['state'] = 'disabled'#未添加文件(刚启动)时禁用

#停止播放

bottonStop = tkinter.Button(root,text='停止')

#按钮布局

bottonStop.place(x=50,y=130,width=50,height=20)

#下一首

bottonNext = tkinter.Button(root,text='下一首',command=bottonNextClik)

#按钮布局

bottonNext.place(x=50,y=100,width=50,height=20)

bottonNext['state']='disabled'

#上一首

bottonPrev = tkinter.Button(root,text='上一首',command=bottonPrevClik)

#按钮布局

bottonPrev.place(x=120,y=100,width=50,height=20)

bottonPrev['state']='disabled'

#显示内容--播放状态

musicName = tkinter.StringVar(root,value='暂时没有播放音乐...')

labelName = tkinter.Label(root,textvariable=musicName)

labelName.place(x=10,y=20,width=260,height=20)

#显示内容--音量调节

s = tkinter.Scale(root,label='音量',from_=0,to=1,orient=tkinter.HORIZONTAL,length=240,

showvalue=0,tickinterval=2,resolution=0.1,command=control_voice)

s.place(x=50,y=150,width=200)

#关闭窗口

root.protocol("WM_DELETE_WINDOW",closeWindows)

#启用消息循环:显示出上一步创建的画板对象

root.mainloop()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自学编程网。

python音乐编程_基于python实现音乐播放器代码实例相关推荐

  1. 基于python的音频播放器_基于python实现音乐播放器代码实例

    基于python实现音乐播放器代码实例,一首,函数,按钮,布局,音乐 基于python实现音乐播放器代码实例 易采站长站,站长之家为您整理了基于python实现音乐播放器代码实例的相关内容. 核心播放 ...

  2. python青少年编程_机器人Python青少年编程开发实例

    章 打开极客之门 1.1 TurnipBit是什么 1.2 从拼插编程开始 1.3 做个真正的程序员 1.3.1 什么Python 1.3.2 面向硬件的MicroPython 1.3.3 支持Mic ...

  3. 曼哈顿距离java实现_基于javascript实现获取最短路径算法代码实例

    这篇文章主要介绍了基于javascript实现获取最短路径算法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 //A算法 自动寻路 ...

  4. java订单类_基于Java创建一个订单类代码实例

    这篇文章主要介绍了基于Java创建一个订单类代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需求描述 定义一个类,描述订单信息 订单id 订 ...

  5. python 循环播放音乐_基于python实现音乐播放器代码实例

    核心播放模块(pygame内核) import time import pygame import easygui as gui file = r'D:\CloudMusic\G.E.M.邓紫棋,艾热 ...

  6. 基于python的网络爬虫编程_基于Python的网络爬虫程序设计

    程序设计 ●Program Design 基于 Python的网络爬虫程序设计 网络 信 息量 的迅 猛 增 长,对 如何从海量的信息中准确的搜索 到用户需要的信息提 出了极大的 挑战.网络爬 虫具有 ...

  7. python 网页编程_通过Python编程检索网页

    python 网页编程 The internet and the World Wide Web (WWW), is probably the most prominent source of info ...

  8. 深度学习 音乐分类_基于神经网络的音乐流派分类

    介绍本文讨论神经网络对声音样本的音乐类型进行分类的任务.当我决定在声音处理领域工作时,我认为声音类型分类和图像分类是相同的问题.但是图像非常火热,我并没有找到太多关于深度学习来解决这个问题的相关资料. ...

  9. cv2 python 获取斑马线_基于python的opencv图像处理实现对斑马线的检测示例

    基本思路 斑马线检测通过opencv图像处理来进行灰度值转换.高斯滤波去噪.阈值处理.腐蚀和膨胀后对图像进行轮廓检测,通过判断车辆和行人的位置,以及他们之间的距离信息,当车速到超过一定阈值时并且与行人 ...

最新文章

  1. 数据库缓存最终一致性的四种方案
  2. 只需要2个工具,百度云盘大文件就能用迅雷和IDM下载
  3. hazelcast_HazelCast的Spring-Boot和Cache抽象
  4. java 根据类名示例化类_Java即时类| getEpochSecond()方法与示例
  5. 【Presto】Cannot connect to discovery server for announce: Announcement failed with status code 404
  6. nginx二进制编译-启动脚本编写
  7. 个人作品- 蘑菇大战
  8. Spring Framework标记库初学指南
  9. 《Microsoft SQL Server 2008 Internals》读书笔记--目录索引
  10. cmd窗口命令行上移下移_微软新版命令行界面:Windows Termina...
  11. URL和URI的详细区分(带实例)
  12. PRISM概率模型检测器初使用--骰子模型
  13. 深入浅出的讲解傅里叶变换(真正的通俗易懂)
  14. 云计算时代运维的出路在哪?
  15. Focal loss分析
  16. MP4学习(九)ts-mp4源码阅读(7)mdia box的解析
  17. 性能诊断定位之CPU问题排查(一):win10环境1
  18. vue中DPlayer视频播放器使用方法
  19. 提取文章中的人名php,php中实现将姓名拆分为姓氏和名字
  20. android 标题被顶出去,解决安卓虚拟键盘把标题栏顶出屏幕外

热门文章

  1. Excel-VBA文件操作
  2. ffmeg将多段视频合成一个视频
  3. python 根据身份证号计算年龄和性别_excel如何根据身份证号计算男女出生日期、性别和年龄?分享了!...
  4. 使 Windows 下的 Qt 应用程序获得 Administrator 权限
  5. 中科院计算机网络信息中心是一种怎样的存在?
  6. 深度学习辅助决策医疗器械软件审评要点及相关说明
  7. C语言万年历输出月份,C语言输出万年历
  8. win10安装账户卡住_安装win10系统卡住不动的原因和处理方法
  9. ubuntu 有key登入sshd Failed publickey for xxx from xx port Xxx ssh2
  10. 酷狗免费下载歌曲(网易云同样适用)