2017-01-26 14 views
0

저는 python에 익숙하지 않습니다. 그리고 그 폴더에있는 모든 mp3 노래를 추가 할 수있는 음악 플레이어를 만들려고합니다.대기열에서 mp3 노래 변경하기 Python, Pygame, Mutagen, Tkinter

목록에있는 모든 노래를 볼 수 있지만 다음 버튼을 클릭하면 다음 노래와 이전 노래 한 곡만 이동합니다. 다음 곡을 다시 클릭하면 다시 같은 곡이 재생됩니다. 어쨌든 코드를 수정할 수 있습니까?

나는 nextsong, prevsong 메소드에 문제가 있다고 생각합니다. 내가 많이 해봤 도움이되지만 오류가 문제가 결코 변화하지 그래서 당신은, 인덱스에 변화를 할당 적이 있다는 것입니다

import os 


import pygame 
from tkinter.filedialog import Tk, Button, askdirectory, Label, Listbox, LEFT, RIGHT 

from mutagen.id3 import ID3 


root = Tk() 


listofsongs=[] 
formattedlist = [] 
realnames = [] 

index =0 


def directorychoose(): 
    filename = askdirectory() 
    os.chdir(filename) 

    for file in os.listdir(filename): 
     if file.endswith(".mp3"): 
      realdir = os.path.realpath(file) 
      audio = ID3(realdir) 
      realnames.append(audio['TIT2'].text[0]) 
      listofsongs.append(file) 



    for file in realnames: 
     formattedlist.append(file+"\n") 

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


def nextsong(event): 
    pygame.mixer.music.load(listofsongs[index+1]) 
    pygame.mixer.music.play() 

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

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

directorychoose() 

label = Label(root,text='Music player') 
label.pack() 

listbox = Listbox(root) 

listbox.pack() 
for item in formattedlist: 
    listbox.insert(0,item) 

button = Button(root,text='Next') 
button.pack(side=LEFT) 
button2 = Button(root,text='Prev') 
button2.pack(side=RIGHT) 
stopbutton = Button(root,text='Stop') 
stopbutton.pack() 

button.bind("<Button-1>",nextsong) 
button2.bind("<Button-1>",prevsong) 
stopbutton.bind("<Button-1>",stopsong) 


root.mainloop() 

답변

1

어디에 있는지 찾을 수 없습니다 바랍니다. 또한 함수 내의 변수가 작성되어 내부에서 소멸되므로 전역 변수로 배치해야합니다.

x+1 

그리고 당신은 그것을 변경해야합니다 :

당신은이 일을하는

x= x+1 

전체 코드 :

import os 


import pygame 
from tkinter.filedialog import Tk, Button, askdirectory, Label, Listbox, LEFT, RIGHT 

from mutagen.id3 import ID3 

root = Tk() 

listofsongs = [] 
formattedlist = [] 
realnames = [] 

index = 0 

def directorychoose(): 
    filename = askdirectory() 
    os.chdir(filename) 

    for file in os.listdir(filename): 
     if file.endswith(".mp3"): 
      realdir = os.path.realpath(file) 
      audio = ID3(realdir) 
      realnames.append(audio['TIT2'].text[0]) 
      listofsongs.append(file) 

    for file in realnames: 
     formattedlist.append(file + "\n") 

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


def nextsong(event): 
    global index 
    index += 1 
    pygame.mixer.music.load(listofsongs[index]) 
    pygame.mixer.music.play() 


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


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


directorychoose() 

label = Label(root, text='Music player') 
label.pack() 

listbox = Listbox(root) 

listbox.pack() 
for item in formattedlist: 
    listbox.insert(0, item) 

button = Button(root, text='Next') 
button.pack(side=LEFT) 
button2 = Button(root, text='Prev') 
button2.pack(side=RIGHT) 
stopbutton = Button(root, text='Stop') 
stopbutton.pack() 

button.bind("<Button-1>", nextsong) 
button2.bind("<Button-1>", prevsong) 
stopbutton.bind("<Button-1>", stopsong) 

root.mainloop() 
+0

당신에게 매우 eyllanesc 감사드립니다. 이제 작동합니다. –