¿Cómo programo un archivo de audio para que se reproduzca automáticamente en pygame después de que termine la primera canción?

Intenté usar la función de cola, pero

pygame.mixer.music.queue(filename) 

no parece estar funcionando

Aquí está el código que utilizo para ejecutar mi archivo mp3:

 def playmusic(self): pygame.mixer.init() pygame.mixer.music.load(self.music_link+self.files[self.file_index]) pygame.mixer.music.play() self.pausedmusic = 0 self.file_index = self.fileindex + 1 pygame.mixer.music.queue(self.music_link+self.files[self.file_index]) 

Intenté usar eventos, pero tampoco obtuve una solución.

Y si uso este código,

 while(pygame.mixer.music.get_busy()): continue self.playmusic() 

la interfaz gráfica de usuario de Tkinter no responde, pero la canción sigue reproduciéndose y también reproduce la siguiente canción automáticamente, manteniendo mi reproductor sin responder hasta que se reproducen todas las canciones.

Estoy usando Python 3.6.

Coloque sus archivos de música (rutas) en una lista, defina un usuario personalizado y llame a pygame.mixer.music.set_endevent(YOUR_USEREVENT) . Luego, pygame agregará este evento a la cola de eventos cuando finalice una canción y puede ejecutar algún código para cambiar el índice de la canción actual. En el siguiente ejemplo, puede incrementar el índice presionando la tecla de flecha hacia la derecha o esperar hasta que finalice una canción (se SONG_FINISHED evento SONG_FINISHED ) y el progtwig elegirá una canción aleatoria (índice).

 import random import pygame as pg pg.mixer.pre_init(44100, -16, 2, 2048) pg.init() screen = pg.display.set_mode((640, 480)) # A list of the music file paths. SONGS = ['file1.ogg', 'file2.ogg', 'file3.ogg'] # Here we create a custom event type (it's just an int). SONG_FINISHED = pg.USEREVENT + 1 # When a song is finished, pygame will add the # SONG_FINISHED event to the event queue. pg.mixer.music.set_endevent(SONG_FINISHED) # Load and play the first song. pg.mixer.music.load('file1.ogg') pg.mixer.music.play(0) def main(): clock = pg.time.Clock() song_idx = 0 # The index of the current song. done = False while not done: for event in pg.event.get(): if event.type == pg.QUIT: done = True elif event.type == pg.KEYDOWN: # Press right arrow key to increment the # song index. Modulo is needed to keep # the index in the correct range. if event.key == pg.K_RIGHT: print('Next song.') song_idx += 1 song_idx %= len(SONGS) pg.mixer.music.load(SONGS[song_idx]) pg.mixer.music.play(0) # When a song ends the SONG_FINISHED event is emitted. # Then just pick a random song and play it. elif event.type == SONG_FINISHED: print('Song finished. Playing random song.') pg.mixer.music.load(random.choice(SONGS)) pg.mixer.music.play(0) screen.fill((30, 60, 80)) pg.display.flip() clock.tick(30) if __name__ == '__main__': main() pg.quit()