Python制作9行最简单音乐播放器?不,我不满足
创始人
2025-05-30 09:32:08
0

人生苦短 我用python

好久不见啦~这次就来给大家整个大福利 ~

源码资料电子书:点击此处跳转文末名片获取

最简单的9行代码音乐播放器如下:

import time
import pygamefile = r'歌曲路径'
pygame.mixer.init()
print('正在播放',file)
track = pygame.mixer.music.load(file)
pygame.mixer.music.play()
time.sleep(130)
pygame.mixer.music.stop()

请添加图片描述

但是我不会满足哒~大家也不会满足的对吧 ~ ~ ~

所以给大家准备了有界面的音乐播放器

知识点 + 所需模块

1.python基础知识
2.requests库
3.time
4.pygame
5.tkinter
6.线程

环境

  • windows
  • pycharm 2021.2
  • python 3.8

完整代码,运行即可,记得三连👍👍👍

(直接明示了)

import os
import time
import tkinter
import tkinter.filedialog
import threading
import pygame  root = tkinter.Tk()
root.title('音乐播放器')
root.geometry('460x600+500+100')
root.resizable(False,False) folder =''
res = []
num = 0
now_music = ''def buttonChooseClick():"""添加文件夹:return:"""global folderglobal resif not folder:folder = tkinter.filedialog.askdirectory()musics = [folder + '\\' + musicfor music in os.listdir(folder) \
\if music.endswith(('.mp3','.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=100,width=260,height=300)if not folder:returnglobal playingplaying = TruebuttonPlay['state'] = 'normal'buttonStop['state'] = 'normal'# python学习交流裙:660193417#pause_resume.set('播放')def play():"""播放音乐:return:"""if len(res):pygame.mixer.init()global numwhile playing:if not pygame.mixer.music.get_busy():netxMusic = res[num]print(netxMusic)print(num)pygame.mixer.music.load(netxMusic.encode())pygame.mixer.music.play(1)if len(res) -1 == num:num = 0else:num = num + 1netxMusic = netxMusic.split('\\')[1:]musicName.set('playing......' + ''.join(netxMusic))def buttonPlayClick():"""点击播放:return:"""buttonNext['state'] = 'normal'if pause_resume.get() == '播放':pause_resume.set('暂停')global folderif not folder:folder = tkinter.filedialog.askdirectory()if not folder:returnglobal playingplaying = Truet = 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 buttonStopClick():"""停止播放:return:"""global playingplaying = Falsepygame.mixer.music.stop()def buttonNextClick():"""下一首:return:"""global playingplaying = Falsepygame.mixer.music.stop()global numif len(res) == num:num = 0playing = Truet = threading.Thread(target=play)t.start()def closeWindow():"""关闭窗口:return:"""global playingplaying = Falsetime.sleep(0.3)try:pygame.mixer.music.stop()pygame.mixer.quit()except:passroot.destroy()def control_voice(value=0.5):"""声音控制:param value: 0.0-1.0:return:"""pygame.mixer.music.set_volume(float(value))def buttonPrevClick():"""上一首:return:"""global playingplaying = Falsepygame.mixer.music.stop()global numif num == 0:num = len(res) - 2elif num == len(res) - 1:num -= 2else:num -= 2print(num)playing = Truet = threading.Thread(target=play)t.start()root.protocol('WM_DELETE_WINDOW', closeWindow)buttonChoose = tkinter.Button(root,text='添加',command=buttonChooseClick)buttonChoose.place(x=50,y=10,width=50,height=20)pause_resume = tkinter.StringVar(root,value='播放')
buttonPlay = tkinter.Button(root,textvariable=pause_resume,command=buttonPlayClick)
buttonPlay.place(x=190,y=10,width=50,height=20)
buttonPlay['state'] = 'disabled'buttonStop = tkinter.Button(root, text='停止',command=buttonStopClick)
buttonStop.place(x=120, y=10, width=50, height=20)
buttonStop['state'] = 'disabled'buttonNext = tkinter.Button(root, text='下一首',command=buttonNextClick)
buttonNext.place(x=260, y=10, width=50, height=20)
buttonNext['state'] = 'disabled'
buttonPrev = tkinter.Button(root, text='上一首',command=buttonPrevClick)
buttonPrev.place(x=330, y=10, width=50, height=20)
buttonPrev['state'] = 'disabled'musicName = tkinter.StringVar(root, value='暂时没有播放音乐...')
labelName = tkinter.Label(root, textvariable=musicName)
labelName.place(x=10, y=30, 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=50, width=200)root.mainloop()

效果展示

简易版的

在这里插入图片描述

半成品,代码没写完(诶嘿我懒)

在这里插入图片描述

👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇

相关内容

热门资讯

沪深两市成交额突破1万亿,较上... 7月7日消息,数据显示,沪深两市成交额突破1万亿,较上一日此时缩量超2700亿,预计全天成交金额近2...
2026世界人工智能大会各项筹... 7月7日消息,从今日举行的上海市新闻发布会上获悉,2026世界人工智能大会暨人工智能全球治理高级别会...
有机硅概念反复活跃,晨光新材直... 7月7日消息,有机硅概念反复活跃,晨光新材直线涨停,东岳硅材涨超10%,硅宝科技、合盛硅业、润禾材料...
深成指、创业板指双双跌逾1%,... 7月7日消息,指数走弱,深成指下挫跌逾1%,沪指跌0.92%,创业板指跌1.01%,化纤、贵金属、医...
联合国官员:希望通过对话为人工... 7月7日消息,首届全球人工智能治理对话当地时间6日在瑞士日内瓦举行,约1500名来自世界各地的代表将...
机器人概念股开盘拉升 巨轮智能、多利科技直线涨停,肇民科技涨超10%,汉宇集团、百达精工跟涨。
前华为“天才少年”公开吐槽De... 7月6日,前华为“天才少年”李博杰在社交平台公开吐槽DeepSeek的面试流程,提及流程较慢且繁琐,...
特朗普称已就美国队球员红牌判罚... 当地时间6日,美国总统特朗普表示,他已就“红牌”问题与国际足联主席因凡蒂诺进行了交谈。 特朗普表示,...
下半年,铜还能杀回来吗? 下半... 文丨小李飞刀2026年上半年,A股市场风格极为撕裂——科创50指数大涨64%,上证50指数反而下跌1...
俊发地产曝3亿信托不良债权1.... ◎ 来源 | 地产密探(ID:real-estate-spy)楼市深调5年,房地产金融风险正在加速出...