[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[SPAM] [pygame] How to play one file at a time with pygame



Hello.
My question is how can I play one file at a time with pygame.I used
the for loop and     it didn't work.
Any help please.
# -*- coding: utf-8 -*-
import wx
import os
import time
import pygame 
from pygame.locals import *




started = False
playing = True
old_track = ''

pygame.mixer.pre_init(44100,-16, 2, 1024 * 3 )
pygame.init()
pygame.mixer.music.load('7.mp3')

def holder():
	time.sleep(0.001)

def play(track):
	global old_track, playing, started  
	MUSICENDEVENT = USEREVENT 
	t = wx.PyTimer(holder)
	if track == old_track:
		pygame.mixer.music.set_endevent(MUSICENDEVENT)
		for event in pygame.event.get():
			if event.type == MUSICENDEVENT :
				pygame.mixer.music.load(track)
				started = False 
				playing = True

		if not started:
			#print 1
			pygame.mixer.music.play()
			playing = True
			started = True
		elif playing:
			pygame.mixer.music.pause()
			playing = False
		else:
			pygame.mixer.music.unpause()
			playing = True
	else:
		pygame.mixer.music.load(track)
		pygame.mixer.music.play()
		started = True
		playing = True
		old_track = track 
	t.Start(10)

def rewind():
	pygame.mixer.music.rewind()

class Test(wx.Frame):
	def __init__(self, parent, id, title):
		super(Test, self).__init__(parent, id, title)
		global track 
		track = ''
		p = wx.Panel(self,-1)
		mainSizer = wx.BoxSizer(wx.VERTICAL)

		buttonsSizer = wx.BoxSizer(wx.HORIZONTAL)
		self.b1 = wx.Button(p,-1,u'ok')
		self.b1.Bind(wx.EVT_BUTTON, self.OnOk)
		self.b2 = wx.Button(p, -1, u'rewind')
		self.b2.Bind(wx.EVT_BUTTON, self.onRewind)
		buttonsSizer.Add(self.b1, 0, wx.ALL, 3)
		buttonsSizer.Add(self.b2, 0, wx.ALL, 3)
		mainSizer.Add(buttonsSizer, 0, wx.ALL|wx.EXPAND, 5)
		p.SetSizer(mainSizer)
		self.Show(True)

	def OnOk(self,evt):
		t = wx.PyTimer(holder)
		files = ['1.mp3', '2.mp3', '1.mp3']
		for i in files :
			play(i)
			#while pygame.mixer.music.get_busy():
				#time.sleep(0.05)
		#t.Start(10)

	def onRewind(self, event):
		rewind()

app = wx.App()
Test(None,-1,'frame')
app.MainLoop()