Как воспроизвести в Python последовательность аудиофайлов один за другим? - PullRequest
0 голосов
/ 22 мая 2019

Я хотел бы сделать в 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()

1 Ответ

0 голосов
/ 22 мая 2019

Вы можете использовать функцию .queue () в mixer.music, чтобы поставить в очередь кучу песен - так что я бы загрузил a, поставил в очередь остальные, а затем запустил play ()

mixer.music.load(a)
[mixer.music.queue(track) for track in [b,c,d]]
mixer.music.play()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...