我想在Python 3.7.3中创建一个音频播放器,该音频播放器将依次播放歌曲。 在这里,您将看到功能“ JustPlay”。只播放第一首歌曲,而不是一个接一个地播放。之前没有“休息”,只播放了最后一个。如何使其依次播放?
from tkinter import *
from pygame import mixer
import random
root = Tk()
menubar = Menu(root)
root.config(menu=menubar)
subMenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="File",menu=subMenu)
subMenu.add_command(label="Open")
subMenu.add_command(label="Exit")
subMenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Help",menu=subMenu)
subMenu.add_command(label="About us")
mixer.init()
root.title("Melody")
text = Label(root, text = "The name of an album")
text.pack()
a = "C:/Pathway1"
b = "C:/Pathway2"
c = "C:/Pathway3"
d = [a, b, c]
def song1():
mixer.music.load(a)
mixer.music.play()
def song2():
mixer.music.load(b)
mixer.music.play()
def song3():
mixer.music.load(c)
mixer.music.play()
def stop_music():
mixer.music.stop()
def set_vol(val):
volume = int(val) / 100
mixer.music.set_volume(volume)
def Randomplay():
mixer.music.load(random.choice(d))
mixer.music.play()
def JustPlay():
for x in d:
mixer.music.load(x)
mixer.music.play()
break
playbtn1 = Button(root, text="song1", command=song1)
playbtn1.pack()
playbtn2 = Button(root, text="song2", command=song2)
playbtn2.pack()
playbtn3 = Button(root, text="song3", command=song3)
playbtn3.pack()
randombtn = Button(root, text="Random", command=Randomplay)
randombtn.pack()
justplaybtn = Button(root, text="Play", command=JustPlay)
justplaybtn.pack()
stopbtn = Button(root, text="Stop", command=stop_music)
stopbtn.pack()
scale = Scale(root, from_=0, to=100, orient=HORIZONTAL, command=set_vol)
scale.pack()
root.mainloop()
答案 0 :(得分:0)
您可以使用mixer.music中的.queue()函数将一堆歌曲排队-因此,我将加载一首歌曲,将其余歌曲排队,然后运行play()
mixer.music.load(a)
[mixer.music.queue(track) for track in [b,c,d]]
mixer.music.play()
答案 1 :(得分:0)
在那里你可以使用线程模块。它允许你按顺序播放音乐并使用你的 TK。 只需编写如下函数:
id: req.params.userId
其中 musiclist 是包含字符串中音乐名称的列表。您可以将索引初始化为 0。列表的大小长度
Song_mut = MP3(current)-->do from mutagen.mp3 import MP3 它允许您以秒为单位知道音乐的长度,因此您将在前一首歌曲结束后添加到队列中歌曲(它是必需的,因为 def the_nexts(index,size,musiclist):
while index<size-1:
current=musiclist[index]
mixer.music.queue(current)
song_mut = MP3(current)
song_length = song_mut.info.length
converted_song_length = time.strftime('%S', time.gmtime(song_length))
time.sleep(float(converted_song_length))
将仅在音乐结束后用 index+1 进行迭代。)
主要调用是while