Python Forum

Full Version: Queue in Pygame
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi

I work on audio player, I use Tkinter for GUI and Pygame for media.

I would like to make a playlist of songs and to play them with pygame.mixer.music

There is a function "queue()", but it doesn't work, actually. In fact, it can take only one song in queue, no more.

So, what I can do? I tried to implement it throut loop:

	running = True;

			while running:

				if (self.mixer.get_busy() == False and files != False):
					self.mixer.load ( self.playlist[files.pop()] )
					self.mixer.play(1)
					
					if (files == False):
						running = False;
						break;
but the problem is that user can't interact with GUI until the loop breaks. It means that user is not able to pause music or stop it.

How I can solve this problem with Pygame? Or it is better to use other library ?

P.S. I browsed GitHub, it turned out that people make audio players with pygame, but it doesn't support playing a playlist of songs.
I would not mix tkinter and pygame in one app. Tkinter has a built in loop while pygame you have to build your loop. The result is the issue you are having along with others. I would just use pygame alone. However you have to build your UI. But there are pre-existing buttons UI modules for pygame. I would also just build my own queue system in pygame.

Here is an example of a game i created a while ago. It creates a playlist of whatever is in the directory. But you can make it limited to a whatever playlist you want. Its just an example.

The Music class:
https://github.com/metulburr/pong/blob/m...ols.py#L43

The music object:
https://github.com/metulburr/pong/blob/m...ols.py#L73

switching to next song when ends
https://github.com/metulburr/pong/blob/m...sic.py#L55

Note: there is no accommodation for looping since i didnt figure anyone would play pong that long, but that can be easily added by repeating the list

As for pygame buttons you can use a pre-existing button module as state before. And some fully fledged GUI toolkits have file browsers if i remember. Or you can make your own.