先上完整代码:
修改文件夹路径即可运行
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编写音乐播放器内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/qq_36535414/article/details/123717402