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()