首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在歌曲自动播放完毕后播放文件中的下一首歌曲

如何在歌曲自动播放完毕后播放文件中的下一首歌曲
EN

Stack Overflow用户
提问于 2018-01-13 06:57:18
回答 2查看 2.4K关注 0票数 1

我正在用pygame做一个音乐播放器。但我不明白如何在前一首歌结束后自动播放下一首歌。我的程序首先读取选定文件夹中的所有mp3文件。你能告诉我怎么做吗?

代码语言:javascript
复制
import tkinter.filedialog as filedialog
import os
import pygame

directory = filedialog.askdirectory()
os.chdir(directory)
song_list = []
for file in os.listdir(directory):
    if file.endswith('.mp3'):
         song_list.append(file)
pygame.mixer.init()
pygame.mixer.music.load(song_list[0])
pygame.mixer.music.play()

我想在第一首歌自动结束后播放下一首歌。

EN

回答 2

Stack Overflow用户

发布于 2018-01-13 20:47:54

这些文件可以在初始的for循环中播放,您不需要将它们放在列表中,然后再播放它们。

关于播放mp3文件,您需要等待音乐播放后才能退出。完成每个文件后,您可以开始以相同的方式播放下一个文件。

代码语言:javascript
复制
import tkinter.filedialog as filedialog
import os
import pygame

directory = filedialog.askdirectory()
print("Loding files from directory:", directory)
os.chdir(directory)
pygame.mixer.init()
for file in os.listdir(directory):
    if file.endswith('.mp3'):
        print("Playing file:", file)
        pygame.mixer.music.load(file)
        pygame.mixer.music.play()
        # Wait for the music to play before exiting 
        while pygame.mixer.music.get_busy():   
            pygame.time.Clock().tick(5)
票数 1
EN

Stack Overflow用户

发布于 2020-08-05 14:12:45

您可以通过列表框选择目录中的任何歌曲,也可以播放它。

如果你想一首一首地播放所有歌曲,你可以添加另一个按钮'Play_all‘,并将@saloua的代码分配给该按钮。

铃声文件夹被放在这个"audio_player.py“所在的文件夹中。

代码语言:javascript
复制
#audio_player.py
import os
import tkinter as tk
import pygame

def songs_list():
    files = [file for file in os.listdir('ringtone')]
    List = []
    for file in files:
        List.append(str(file))
        #print(file)
    #print(List)
    return List

def play(song_name):

    song_name_label['text'] = "Now Playing: " + song_name
    pygame.mixer.init()
    pygame.mixer.music.load("./ringtone/" + song_name)
    print("Playing:", song_name)
    pygame.mixer.music.play()

window = tk.Tk()
window .title("Any Name")
Height = 720
Width = 1080

# define size of window
canvas = tk.Canvas(window, bg='#3cd1fa',  height=Height, width=Width)
canvas.pack()

# play button **************************************************
play_button_frame = tk.Frame(window)
play_button_frame.place(relx=0.40, rely=0.88, relheight=0.1, relwidth=0.10)

play_button = tk.Button(play_button_frame, text="Play", font=25, fg='#d1d1d1', bg='black',
                        command=lambda: play(listbox.get(listbox.curselection()))  )
play_button.place(relx=0.01, rely=0.005, relheight=0.98, relwidth=0.49)


#list box (playlist) *************************************************
listbox_frame = tk.Frame(window, bg='green')
listbox_frame.place(relx=0.7, rely=0.2, relheight=0.6, relwidth=0.29)

listbox = tk.Listbox(listbox_frame, bg="white", selectmode='ACTIVE')
listbox.place(relx=0.01, rely=0.01, relheight=0.98, relwidth=0.98)

# song name *****************************************************************
song_name_frame = tk.Frame(window, bg='white')
song_name_frame.place(relx=0.20, rely=0.1, relheight=0.05, relwidth=0.60)
song_name_label = tk.Label(song_name_frame,font=("times now roman", 10))
song_name_label.place(relx=0.0, rely=0, relheight=1, relwidth=1)

# PLaylist, to display song in the list
playlist = songs_list()
for item in playlist:
    listbox.insert(tk.END, item)
# auto selecting 1st element of list box
listbox.selection_set( first = 0 )

window.mainloop()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48235156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档