使用python tkinter实现打开播放、暂停、下一首播放、快进的功能、选择音乐、音乐单曲循环、列表循环,随机播放。
时间: 2023-07-04 14:09:01 浏览: 217
好的,我可以帮你实现这个功能。首先,你需要安装pyttsx3和pygame库,其中pyttsx3用于语音提示,pygame用于播放音乐。你可以使用pip来安装这两个库。
接下来,我们可以开始编写代码了。以下是一个简单的示例程序,其中包含了打开播放、暂停、下一首播放、快进的功能、选择音乐、音乐单曲循环、列表循环,随机播放等功能:
```python
import os
import random
import pyttsx3
import pygame
from tkinter import *
from tkinter import filedialog
# 初始化pygame
pygame.init()
# 创建窗口
window = Tk()
window.title("Music Player")
window.geometry("500x300")
# 创建播放器
player = pygame.mixer.music
# 创建语音提示
engine = pyttsx3.init()
# 创建变量存储当前播放模式
play_mode = "order"
# 创建变量存储当前播放列表
playlist = []
# 创建变量存储当前播放歌曲
current_song = ""
# 创建变量存储当前播放状态
is_playing = False
# 创建变量存储当前音量
volume = 0.5
# 创建函数选择音乐文件
def choose_file():
global playlist
filetypes = (("MP3 Files", "*.mp3"), ("All Files", "*.*"))
filenames = filedialog.askopenfilenames(title="Choose a file", filetypes=filetypes)
for filename in filenames:
if filename not in playlist:
playlist.append(filename)
# 创建函数打开播放
def play():
global current_song, is_playing
if not is_playing:
if current_song == "":
if len(playlist) > 0:
current_song = playlist[0]
player.load(current_song)
player.play()
is_playing = True
engine.say("Playing")
engine.runAndWait()
# 创建函数暂停播放
def pause():
global is_playing
if is_playing:
player.pause()
is_playing = False
engine.say("Paused")
engine.runAndWait()
# 创建函数下一首播放
def next_song():
global current_song, is_playing
if is_playing:
player.stop()
is_playing = False
index = playlist.index(current_song)
if play_mode == "order":
if index < len(playlist) - 1:
current_song = playlist[index + 1]
else:
current_song = playlist[0]
elif play_mode == "loop":
current_song = current_song
elif play_mode == "random":
current_song = random.choice(playlist)
player.load(current_song)
player.play()
is_playing = True
engine.say("Next song")
engine.runAndWait()
# 创建函数快进
def forward():
global is_playing
if is_playing:
current_time = player.get_pos()
new_time = current_time + 5000
player.set_pos(new_time)
engine.say("Forward")
engine.runAndWait()
# 创建函数音量调节
def volume_control(val):
global volume
volume = int(val) / 100
player.set_volume(volume)
# 创建函数设置播放模式
def set_play_mode(mode):
global play_mode
play_mode = mode
# 创建函数播放列表循环
def loop_play():
global play_mode
play_mode = "loop"
# 创建函数随机播放
def random_play():
global play_mode
play_mode = "random"
# 创建函数音乐单曲循环
def single_play():
global play_mode
play_mode = "single"
# 创建菜单栏
menubar = Menu(window)
# 创建文件菜单
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Open", command=choose_file)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=window.quit)
menubar.add_cascade(label="File", menu=filemenu)
# 创建播放菜单
playmenu = Menu(menubar, tearoff=0)
playmenu.add_command(label="Play", command=play)
playmenu.add_command(label="Pause", command=pause)
playmenu.add_command(label="Next Song", command=next_song)
playmenu.add_command(label="Forward", command=forward)
menubar.add_cascade(label="Play", menu=playmenu)
# 创建设置菜单
setmenu = Menu(menubar, tearoff=0)
setmenu.add_radiobutton(label="Order", variable=play_mode, value="order", command=lambda: set_play_mode("order"))
setmenu.add_radiobutton(label="Loop", variable=play_mode, value="loop", command=loop_play)
setmenu.add_radiobutton(label="Random", variable=play_mode, value="random", command=random_play)
setmenu.add_radiobutton(label="Single", variable=play_mode, value="single", command=single_play)
menubar.add_cascade(label="Settings", menu=setmenu)
# 将菜单栏添加到窗口
window.config(menu=menubar)
# 创建音量控制滑动条
volume_slider = Scale(window, from_=0, to=100, orient=HORIZONTAL, command=volume_control)
volume_slider.set(50)
volume_slider.pack()
# 运行窗口
window.mainloop()
```
通过运行这个程序,你可以选择音乐文件,打开播放,暂停播放,下一首播放,快进等操作。你也可以通过设置播放模式,选择音乐单曲循环,列表循环或随机播放。同时,你还可以通过音量控制滑动条来调节音量大小。