脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - 利用Python编写本地音乐播放器

利用Python编写本地音乐播放器

2022-11-14 10:07骤雨南山下 Python

这篇文章主要介绍了利用Python编写本地音乐播放器,主要以分享完整源码展开文章内容,具有一的参考价值,需要的小伙伴可以参考一下

先上完整代码:

修改文件夹路径即可运行

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# -*- encoding: utf-8 -*-
'''
@Description:       :
@Date     :2022/03/24 17:43:26
@Author      :骤&雨
@version      :1.0
'''
#导入相关库文件
import os
import tkinter
import tkinter.filedialog
import random
import time
import threading
import pygame
 
from asyncio.base_tasks import _task_print_stack
from cProfile import label
from email import header
from functools import total_ordering
from importlib import find_loader
from logging import root
from mimetypes import init
from re import X
from turtle import width
from matplotlib.pyplot import pause
from scipy import rand
 
#设置文件夹路径
folder = r'C:\Users\Administrator\Desktop\Python\Python Code\TiquMusicFromVedio'
 
 
"""
@description  : 音乐播放,默认播放文件夹内的所有mp3文件
---------
@param  :
-------
@Returns  :
-------
"""
def play():
    global folder
    music =[folder+'\\'+music for music in os.listdir(folder)\
        if music.endswith(('.mp3','.wav','.ogg'))]
    total = len(music)
    #初始化混音器设备
    pygame.mixer.init()
    while playing:
        if not pygame.mixer.music.get_busy():
            #随机播放一首歌曲
            nextMusic = random.choice(music)
            pygame.mixer.music.load(nextMusic.encode())
            #播放一次
            pygame.mixer.music.play(1)
            musicName.set('playing.......'+nextMusic)
        else:
            time.sleep(0.3)
 
root = tkinter.Tk()
root.title('音乐播放器')
root.geometry('700x80+400+300')
root.resizable(False,False)
 
#关闭程序时执行的代码
def closeWindow():
    global playing
    playing = False
    try:
        pygame.mixer.music.stop()
        pygame.mixer.quit()
    except:
        pass
    root.destroy()
root.protocol('WM_DELETE_WINDOW',closeWindow)
pause_resume=tkinter.StringVar(root,value = 'NotSet')
playing = False
 
#播放按钮
def  buttonPlayClick():
    global folder
    if not folder:
        folder = tkinter.filedialog.askdirectory()
    if not folder:
        return
    global playing
    playing = True
 
 
    #创建一个线程来播放音乐
    t = threading.Thread(target=play)
    t.start()
    #根据情况禁用或启用相应按钮
    buttonPlay['state'] = 'disabled'
    buttonStop['state'] = 'normal'
    buttonPause['state'] = 'normal'
    buttonNext['state'] = 'normal'
    pause_resume.set('Pause')
buttonPlay = tkinter.Button(root,text = 'Play',command=buttonPlayClick)
buttonPlay.place(x=20,y=10,width=50,height=20)
 
#终止按钮
def buttonStopClick():
    global playing
    playing = False
    pygame.mixer.music.stop()
    musicName.set('暂时没有播放音乐')
    buttonPlay['state'] = 'normal'
    buttonStop['state'] = 'disabled'
    buttonPause['state'] = 'disabled'
buttonStop = tkinter.Button(root,text='Stop',command=buttonStopClick)
buttonStop.place(x=80,y=10,width=50,height=20)
buttonStop['state']='disabled'
 
#暂停与恢复 复用按钮
def buttonPauseClick():
    global playing
    if pause_resume.get()=='Pause':
        #playing = False
        pygame.mixer.music.pause()
        pause_resume.set('Resume')
    elif pause_resume.get()=='Resume':
        #playing = True
        pygame.mixer.music.unpause()
        pause_resume.set('Pause')
buttonPause = tkinter.Button(root,textvariable=pause_resume,command=buttonPauseClick)
buttonPause.place(x=140,y=10,width=50,height=20)
buttonPause['state']='disabled'
 
#下一首
def buttonNextClick():
    global playing
    playing = False
    pygame.mixer.music.stop()
    pygame.mixer.quit()
    buttonPlayClick()
buttonNext = tkinter.Button(root,text='Next',command=buttonNextClick)
buttonNext.place(x=200,y=10,width=50,height=20)
buttonNext['state']='disabled'
 
musicName = tkinter.StringVar(root,value='暂时没有播放音乐!')
labelName = tkinter.Label(root,textvariable=musicName)
labelName.place(x=0,y=40,width=700,height=20)
 
#启动消息循环
root.mainloop()

运行结果如下:

利用Python编写本地音乐播放器

到此这篇关于利用Python编写本地音乐播放器的文章就介绍到这了,更多相关Python编写音乐播放器内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_36535414/article/details/123717402

延伸 · 阅读

精彩推荐
  • PythonScrapy中如何向Spider传入参数的方法实现

    Scrapy中如何向Spider传入参数的方法实现

    这篇文章主要介绍了Scrapy中如何向Spider传入参数的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的...

    pengjunlee4342020-09-29
  • Pythonpython PaddleOCR库用法及知识点详解

    python PaddleOCR库用法及知识点详解

    在本篇内容里小编给大家分享的是一篇关于python PaddleOCR库用法及知识点详解内容,对此有需要的朋友们可以学习参考下。...

    小妮浅浅8662021-12-14
  • PythonPython编程中的反模式实例分析

    Python编程中的反模式实例分析

    这篇文章主要介绍了Python编程中的反模式,详细讲述了反模式的害处并以实例形式具体分析了容易造成的易错点,对于Python学习来说具有一定的参考借鉴价值...

    脚本之家4752020-05-17
  • PythonPython机器学习NLP自然语言处理基本操作新闻分类

    Python机器学习NLP自然语言处理基本操作新闻分类

    本文是Python机器学习NLP自然语言处理系列文章,开始我们自然语言处理 (NLP) 的学习旅程. 本文主要学习NLP自然语言处理基本操作新闻分类...

    我是小白呀6012022-01-08
  • Python详解tensorflow载入数据的三种方式

    详解tensorflow载入数据的三种方式

    这篇文章主要介绍了详解tensorflow载入数据的三种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    BYR_jiandong9202021-02-05
  • PythonPython语言中的数据类型-序列

    Python语言中的数据类型-序列

    这篇文章主要介绍了Python语言中的数据类型-序列,前面我们提到了Python数据类型中的内置数值类型与字符串类型。今天学习一下Python的序列数据类型,要知...

    酷尔。6472022-10-13
  • PythonPython使用内置json模块解析json格式数据的方法

    Python使用内置json模块解析json格式数据的方法

    这篇文章主要介绍了Python使用内置json模块解析json格式数据的方法,结合实例形式分析了Python使用内置的json模块实现json格式数据的解析、转换相关操作技巧...

    不想长大啊6552020-11-27
  • PythonPython的集合类型之set和frozenset详解

    Python的集合类型之set和frozenset详解

    这篇文章主要为大家详细介绍了Python的集合类型之set和frozenset,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希...

    安澜仙王11042022-11-02