环境:

python2.7

pygame

功能:

播放指定目录下的歌曲(暂时mp3),可以上一曲、下一曲播放。

文件目录:

font  字体文件夹

image  图片文件夹

music  音乐文件夹

play.py  主程序

settings.py  配置文件

settings.py

# -*- coding: utf-8 -*-
# setting 配置文件
import os
from os import path
d = os.path.dirname(__file__)
## music file path
MUSIC_PATH = path.join(d, 'music/')
## image file path
IMAGE_PATH = path.join(d, 'image/')
## auto play
AUTO_PALY = False
## paly type we can wav or m4a -> mp3
PLAY_TYPE = ['.mp3','.wav','.m4a']
## DEFAULT play start
PLAY_START = 0

play.py

# -*- coding: utf-8 -*-
import time
import pygame
from pygame.locals import *
import os
import sys
from settings import *
d = os.path.dirname(__file__)
class window:
def __init__(self):
pygame.init()
pygame.display.set_caption("player")
bgColor = (255, 230, 230)
self.screen = pygame.display.set_mode((640, 480))
self.screen.fill(bgColor)
## 显示上一曲
prve = pygame.image.load("image/prve.png").convert_alpha()
width, height = prve.get_size()
self.screen.blit(prve, (240 - width / 2, 40))
self.prveX = (240 - width / 2, 320 + width / 2)
self.prveY = (40, 40 + height)
self.show_play_pause() ## 显示下一曲按钮
next = pygame.image.load("image/next.png").convert_alpha()
self.screen.blit(next, (400 - width / 2, 40))
self.nextX = (320 - width / 2, 400 + width / 2)
self.nextY = (40, 40 + height) ## 显示logo
logo = pygame.image.load("image/pygame_logo.gif").convert_alpha()
width, height = logo.get_size()
self.screen.blit(logo, (320 - width / 2, 200)) pygame.display.flip()
def show_play_pause(self, type='player'):
'''显示播放按钮'''
print type
if type == 'player':
player = pygame.image.load("image/player.png").convert_alpha()
else:
player = pygame.image.load("image/pause.png").convert_alpha()
width, height = player.get_size()
self.screen.blit(player, (320 - width / 2, 40))
self.playerX = (320 - width / 2, 320 + width / 2)
self.playerY = (40, 40 + height)
pygame.display.flip() def text_objects(self, text, font):
''' font'''
textSurface = font.render(text, True, (233,150,122))
return textSurface, textSurface.get_rect() def message_diaplay(self, text):
'''show font'''
largeText = pygame.font.Font('font/Deng.ttf', 14)
TextSurf, TextRect = self.text_objects(text, largeText)
TextRect.center = ((320), (150))
self.screen.blit(TextSurf, TextRect)
pygame.display.update() class Mp3:
def __init__(self):
self.playTrue = False ##播放与停止
self.playStart = False ##是否已经开始 def load_music(self, musicPath):
print musicPath
pygame.mixer.init()
self.track = pygame.mixer.music.load(musicPath.encode('utf-8')) def play(self):
if self.playTrue == False:
if self.playStart == False:
print '[*] start play'
pygame.mixer.music.play()
Mywindow.message_diaplay(u'正在播放: %s' % musicList[PLAY_START])
self.playTrue = True
self.playStart = True
Mywindow.show_play_pause(type="pause")
else:
print '[*] start unpause'
pygame.mixer.music.unpause()
Mywindow.message_diaplay(u'正在播放: %s' % musicList[PLAY_START])
self.playTrue = True
Mywindow.show_play_pause(type="pause")
else:
print '[*] start pause'
pygame.mixer.music.pause()
Mywindow.message_diaplay(u'暂停播放: %s' % musicList[PLAY_START])
self.playTrue = False
Mywindow.show_play_pause() def getmusicList():
print '[*] get music pool!!'
musicFileList= os.listdir(MUSIC_PATH)
# print file_lists
## get music type
musicList = []
for v in musicFileList:
print u'[*] this song is %s' % v.decode('gbk')
v = v.decode('gbk')
file = os.path.splitext(v)
filename, type = file
print '[*] filename is %s' % filename
print '[*] type is %s' % type
## 判断当前类型是否存在可以播放的类型
if type.lower() in PLAY_TYPE:
print '[*] this song we can play!!'
musicList.append(v)
else:
print '[*] this song we can not play!!'
print '[*] this musiclist is ', musicList
return musicList
def changeMusic():
print '[*] change music !!' if __name__ == '__main__':
print ''' ____ __ __ __ __ _______ _______
/__ \\ \\_\\/_/ / / / /____ / ___ / / ___ /
/ /_/ / \\__/ / /___ / /__ / / / / / / / / /
/ ____/ / / / /___/ / / / / / /__/ / / / / /
/_/ /_/ /_/___/ /_/ /_/ \\_____/ /_/ /_/'''
musicList = getmusicList()
Mywindow = window()
mp3Player = Mp3()
## exit()
if AUTO_PALY:
print '[*] auto play!!'
## default load first song
mp3Player.load_music(MUSIC_PATH + musicList[PLAY_START])
## play
mp3Player.play()
else:
print '[*] no auto paly!!'
while True:
# 游戏主循环
for event in pygame.event.get():
if event.type == QUIT:
# 接收到退出事件后退出程序
print 'Good Bye~~'
exit()
elif event.type == MOUSEBUTTONDOWN:
pressed_array = pygame.mouse.get_pressed()
for index in range(len(pressed_array)):
if pressed_array[index]:
if index == 0:
if Mywindow.playerX[0] < event.pos[0] < Mywindow.playerX[1] and Mywindow.playerY[0] < \
event.pos[1] < Mywindow.playerY[1]:
print '[*] click this player!!'
## 默认打开第一首歌曲
if mp3Player.playStart:
mp3Player.play()
else:
mp3Player.load_music(MUSIC_PATH + musicList[PLAY_START])
mp3Player.play()
elif Mywindow.prveX[0] < event.pos[0] < Mywindow.prveX[1] and Mywindow.prveY[0] < \
event.pos[1] < Mywindow.prveY[1]:
print '[*] click this prve!!'
if mp3Player.playStart:
if PLAY_START == 0:
print '[*] no song to prve_play'
else:
PLAY_START -= 1
mp3Player = Mp3()
mp3Player.load_music(MUSIC_PATH + musicList[PLAY_START])
mp3Player.play()
else:
print '[*] no song is play!!'
elif Mywindow.nextX[0] < event.pos[0] < Mywindow.nextX[1] and Mywindow.nextY[0] < \
event.pos[1] < Mywindow.nextY[1]:
print '[*] click this next!!'
if mp3Player.playStart:
if PLAY_START == len(musicList)-1:
print '[*] no song to next_play'
else:
PLAY_START += 1
mp3Player = Mp3()
mp3Player.load_music(MUSIC_PATH + musicList[PLAY_START])
mp3Player.play()
else:
print '[*] no song is play!!' '''
some problems:
1、pygame 写的字如何更新值,而不是在同一位置再写入
'''

运行效果:

还有部分问题需要解决,当然也只能玩玩~

pygame 简单播放音乐程序的更多相关文章

  1. Python使用Pygame.mixer播放音乐

    Python使用Pygame.mixer播放音乐 frequency这里是调频率... 播放网络中的音频: #!/usr/bin/env python # -*- coding: utf-8 -*- ...

  2. python3用pygame实现播放音乐文件

    import pygameimport time #导入音乐文件file = r'C:\1.wav'pygame.mixer.init()track = pygame.mixer.music.load ...

  3. 用PHP+H5+Boostrap做简单的音乐播放器(进阶版)

    前言:之前做了一个音乐播放器(纯前端),意外的受欢迎,然后有人建议我把后台一起做了,正好也想学习后台,所以学了两天php(不要吐槽我的速度,慢工出细活嘛~)然后在之前的基础上也又完善了一些功能,所以这 ...

  4. 简单的音乐播放器(VS 2010 + Qt 4.8.5)

    昨天历经千辛万苦,配置好了VS 2010中的Qt环境(包括Qt for VS插件),今天决定浅浅地品味一下将两者结合进行编程的魅力. 上网查了一些资料,学习了一些基础知识,决定做一个简单的音乐播放器, ...

  5. C#播放音乐,调用程序

    一:C# 播放音乐 string sound = Application.StartupPath + "/sound/msg.wav"; //Application.Startup ...

  6. Android之通过网络播放一首简单的音乐

    首先,附上程序执行后的效果.例如以下图所看到的: 一.部署一个web项目到tomcatserver上: 1.这个小程序是结合网络来播放一首音乐的,首先,把我们搞好的一个web项目放置在tomcat安装 ...

  7. 使用Service组件实现简单的音乐播放器功能 --Android基础

    1.本例利用Service实现简单的音乐播放功能,下面是效果图.(点击开始播放开启服务,音乐播放,点击“停止播放”关闭服务,音乐停止播放.) 2.核心代码: MusicService.java: pa ...

  8. swift3.0 简单直播和简单网络音乐播放器

    本项目采用swift3.0所写,适配iOS9.0+,所有界面均采用代码布局. 第一个tab写的是简单直播,传统MVC模式,第二个tab写的是简单网络音乐播放器.传说MVVM模式(至于血统是否纯正我就不 ...

  9. matlab播放音乐

    最近在做计算,写了一些matlab代码,脑壳还疼,所以决定发挥一下逗B精神,写一个程序玩一下. 想了想,既然写代码的时候喜欢听歌,而且我的电脑打开网易音乐的速度巨慢(不知道为什么..),那些一个程序直 ...

随机推荐

  1. 破解 JS(原型)继承

    总体分为四大类:利用空对象作为中介继承.Object.create 继承.setPrototypeOf 继承.拷贝继承 function Animal(name, age) { this.name = ...

  2. JQ 查找 两个同辈元素之间 的同辈元素 nextUntil() 用于做一个多级菜单

    可以应用的地方,参考了淘宝的API菜单列表 我自己的应用

  3. CSS3 Transform的perspective属性

    以下两行语句有什么区别? Css <div id="animateTest" style="-webkit-transform: perspective(400px ...

  4. 配置selenium grid

    本文对Selenium Grid进行了完整的介绍,从环境准备到使用Selenium Grid进行一次完整的多节点分布式测试. 运行环境为Windows 10,Selenium版本为 3.5.0,Chr ...

  5. springcloud学习总结

    最近花了一周的时间对springcloud的常用组件进行了一些入门级的了解,也破天荒的积极起来用博客进行了学习的记录,只是希望以后用的时候能对自己有所帮助,也希望给跟我一样对springcloud毫无 ...

  6. Linux每天一个命令:nc/ncat

    nmap-ncat.x86_64版nc/ncat nc/ncat所做的就是在两台电脑之间建立链接并返回两个数据流,在这之后所能做的事就看你的想像力了.你能建立一个服务器,传输文件,与朋友聊天,传输流媒 ...

  7. Android:layout属性大全

    Android layout属性大全 第一类:属性值 true或者 false android:layout_centerHrizontal 水平居中android:layout_centerVert ...

  8. springboot区分开发、测试、生产多环境的应用配置(二)

    转:https://www.jb51.net/article/139119.htm springboot区分开发.测试.生产多环境的应用配置(二) 这篇文章主要给大家介绍了关于maven profil ...

  9. yarn不是内部指令 react-native不是内部指令

    1.先查看是否全局安装 2.我遇到的是,全局安装了,依然有问题. 昨天装了一个高版本的node,成功后有个黑窗口我点了几个回车,在我的环境变量里加了一大推重复的变量,删除就正常了,如下图是我删完之后的

  10. Java第三次作业——面向对象基础(封装)

    Java第三次作业--面向对象基础(封装) (一)学习总结 1.什么是面向对象的封装性,Java中是如何实现封装性的?试举例说明. 封装性 封装性是面向对象的方法所应遵循的一个重要原则,它有两个含义: ...