文章目录
- 前言
- 一、项目介绍
- 二、环境配置
- 三、代码实战
前言
昨天是博主的一位朋友生日,除了送上大大的红包,知道他喜欢听音乐,特意用代码给他写了一个 专属音乐播放器,今天把这个代码也开源送给所有粉丝哦。
一、项目介绍
我们常用的音乐播放器,比如酷狗,QQ音乐等里面的页面款式都是官方设定好的,使用者无法根据自己的需求更改,但是博主用代码写的这个 专属音乐播放器 则不同,作为普通用户的话,可以按照自己天马行空的想象力更改页面布局,背景颜色,包括播放器的名字都可以任意命名。
当然最关键的是 此款播放器所占内存非常非常小,仅有1.9KB,任何配置的电脑都可以运行,相较于那些动辄几十、上百兆大小的播放器而言,是不是嗨到起飞呢ヾ(✿゚▽゚)ノ。
我们先一睹为快,看看效果吧:
二、环境配置
在正式写代码之前,我们需要提前安装配置好如下工具:
- 下载安装好Python解释器
- 下载安装好Pycharm
- 将Python解释器正确配置到Pycharm中
- 需要额外安装好pygame这个三方库
第一,我们需要安装好Python是因为此项目是用Python语言编写的,如果还有不会下载安装的小伙伴,可以看博主之前的博客【百万程序员第一步,学会Python安装(超详细哦)】。
第二,需要安装好Pycharm是因为这是一个非常好用的写代码神器,我们所有的Python代码都会在这个编辑器上编写,如果还有不会下载安装的小伙伴,也可以看博主之前的博客【Pycharm安装配置详细教程】。
第三,需要将安装好的Python配置到Pycharm中是因为Pycharm只可以写代码,但是无法把代码翻译成电脑能理解执行的二进制机器码,所以需要将Python解释器配置上去,这样所有代码写好之后均可被解释执行,至于配置的详细步骤,还有不懂的小伙伴可以参考第二条里面提到的博客,在此就不做重复赘述。
第四,我们需要额外安装pygame这个三方库是因为稍后代码中需要用到这个库,之所以叫三方库,顾名思义,就是第三方来源的库,也就是Python安装好之后本身是没有这个库的,需要我们额外安装一下,具体安装方式如下:
-
同时按下键盘的 Win + R 键打开运行框,Win键就是Windows图标键
-
在运行框中输入 cmd 这三个字母,然后点击确定,进入黑色控制台
-
在控制台里面输入如下命令,如果担心输错,可以直接复制下面命令
pip install pygame -i https://mirrors.aliyun.com/pypi/simple/
-
输入完成后,按下回车键(也就是Enter键),等待安装完成即可,安装成功的字样如下图红框所示
三、代码实战
代码实战中有几个部分跟大家先单独介绍一下。
首先是我们需要引入的全部库,如下:
import os
import pygame
import tkinter as t
from tkinter.filedialog import askdirectory
其中, os 库是Python自带的操作系统库,不用额外安装,作用是处理电脑中的文件及文件夹,比如创建、删除、查询等等,因为我们的播放器如果要播放本地歌曲,就要打开本地文件夹读取所有歌曲目录,这里就需要用到 os 库;
pygame 库是第三方游戏库,这个库的作用主要是用于游戏开发中所有场景,比如动作,声音,图像等等。在此项目中的作用是加载和播放声音,因为我们读取到歌曲之后要进行播放、暂停等操作,所以就需要用到 pygame 库,当然这个库需要额外安装,上面我们已经提到了。
tkinter 库是Python自带的视窗设计库,不用额外安装,作用是设计图形界面窗口,比如我们打开任何软件都有窗口外观,那这些外观元素都可以进行设计。在项目中因为我们要自己设计播放器窗口的名字,里面的分区大小,颜色等等,所以需要用到 tkinter 库。
其次是播放器窗口大小和位置设计,代码如下:
screenWidth = music_player.winfo_screenwidth()
screenHeight = music_player.winfo_screenheight()
width = 700
height = 700
left = (screenWidth - width) / 2
top = (screenHeight - height) / 2
music_player.geometry("%dx%d+%d+%d" % (width, height, left, top))
如果有小伙伴想自己更改播放器窗口大小和位置,可以更改上面代码中的数字参数哦。
再就是播放器里面控件的样式布局,代码如下:
Button1 = t.Button(music_player, width=5, height=3, font="Helvetica 12 bold", text="播放", command=play, bg="SeaGreen1", fg="white")
Button2 = t.Button(music_player, width=5, height=3, font="Helvetica 12 bold", text="停止", command=stop, bg="red", fg="white")
Button3 = t.Button(music_player, width=5, height=3, font="Helvetica 12 bold", text="暂停", command=pause, bg="Orchid1", fg="white")
Button4 = t.Button(music_player, width=5, height=3, font="Helvetica 12 bold", text="取消暂停", command=unpause, bg="Yellow4", fg="white")
如果大家想按照自己喜好更换控件的样式,就需要更改上面代码括号里面的参数。
最后,附上全部代码如下:
import os
import pygame
import tkinter as t
from tkinter.filedialog import askdirectory
music_player = t.Tk()
music_player.title("小十一的专属音乐播放器")
screenWidth = music_player.winfo_screenwidth()
screenHeight = music_player.winfo_screenheight()
width = 700
height = 700
left = (screenWidth - width) / 2
top = (screenHeight - height) / 2
music_player.geometry("%dx%d+%d+%d" % (width, height, left, top))
directory = askdirectory()
os.chdir(directory)
song_list = os.listdir()
play_list = t.Listbox(music_player, font="Helvetica 12 bold", bg='SkyBlue1', selectmode=t.SINGLE)
for item in song_list:
pos = 0
play_list.insert(pos, item)
pos += 1
pygame.init()
pygame.mixer.init()
# 播放
def play():
pygame.mixer.music.load(play_list.get(t.ACTIVE))
var.set(play_list.get(t.ACTIVE))
pygame.mixer.music.play()
# 停止
def stop():
pygame.mixer.music.stop()
# 暂停
def pause():
pygame.mixer.music.pause()
# 取消暂停
def unpause():
pygame.mixer.music.unpause()
Button1 = t.Button(music_player, width=5, height=3, font="Helvetica 12 bold", text="播放", command=play, bg="SeaGreen1", fg="white")
Button2 = t.Button(music_player, width=5, height=3, font="Helvetica 12 bold", text="停止", command=stop, bg="red", fg="white")
Button3 = t.Button(music_player, width=5, height=3, font="Helvetica 12 bold", text="暂停", command=pause, bg="Orchid1", fg="white")
Button4 = t.Button(music_player, width=5, height=3, font="Helvetica 12 bold", text="取消暂停", command=unpause, bg="Yellow4", fg="white")
var = t.StringVar()
song_title = t.Label(music_player, font="Helvetica 12 bold", textvariable=var)
song_title.pack()
Button1.pack(fill="x")
Button2.pack(fill="x")
Button3.pack(fill="x")
Button4.pack(fill="x")
play_list.pack(fill="both", expand="yes")
music_player.mainloop()