Открытие mp3 в python

Питон видит директорию, но не видит файлов в ней.

Формат файлов тот же - .mp3

# usr/bin/env python3
# -*- coding: utf-8 -*-    

import pygame
import os
from tkinter.filedialog import askdirectory

root = Tk()

root.minsize(300,300)
root.geometry('320x620')
root.title("Плеер Серёга")

listofsongs = []

v = StringVar()

songlabel = Label(root,textvar = v, width = 35)
songlabel.pack()

index = 0

def nextsong(event):
    global index
    index += 1

    pygame.mixer.music.load(listofsongs[index])
    pygame.mixer.music.play()

    updatelabel()

def stopsong(event):
    pygame.mixer.music.stop()

def prevsong(event):
    global index
    index -= 1
    pygame.mixer.music.load(listofsongs[index])
    pygame.mixer.music.play()
    updatelabel()

def updatelabel():
    global index
    v.set(listofsongs[index])

def choosesong():
    directory = askdirectory()
    os.chdir(directory)

    for file in os.listdir(directory):
        if file.endswith(".mp3"):
            listofsongs.append(file) 

    pygame.mixer.init()
    pygame.mixer.music.load(listofsongs[0])

label = Label(root, text="Плейлист")
label.pack()

listbox = Listbox(root, width = 320, height = 20)
listbox.pack()

listofsongs.reverse

for items in listofsongs:
    listbox.insert(0, items)

listofsongs.reverse()

nextbutton = Button(root, text="Следующий трек")
nextbutton.pack()

prevbutton = Button(root, text="Предыдущий трек")
prevbutton.pack()

stopbutton = Button(root, text="Остановить трек")
stopbutton.pack()

choosebutton = Button(root, text="Выбрать треки", command = choosesong)
choosebutton.pack()

nextbutton.bind("<Button-1>", nextsong)
stopbutton.bind("<Button-1>", stopsong)
prevbutton.bind("<Button-1>", prevsong)
songlabel.pack()

root.mainloop()

Ответы (1 шт):

Автор решения: Vladimir Afanasyev

Вам нужно перенести вот этот кусок кода в функцию choosesong, потому что при выборе папки вы заполните listofsongs, но не выведите их в окно, т.к. вы выводите из только при инициализации приложения:

for items in listofsongs:
    listbox.insert(0, items)

Чтобы получилось вот так:

def choosesong():
    directory = askdirectory()
    os.chdir(directory)

    for file in os.listdir():
        if file.endswith(".mp3"):
            listofsongs.append(file)
    for items in listofsongs:
        listbox.insert(0, items)
    pygame.mixer.init()
    pygame.mixer.music.load(listofsongs[0])
→ Ссылка