Открытие 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])