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

Re: [pygame] toggle between play pause and unpause



On Sun, 2017-05-07 at 14:15 -0700, pythonist12@xxxxxxxxx wrote:
> I added the print "toufik" and my name was printed , but the music
> did not unpause so what is the problem .

And the paused() function you've put in the new code calls
pygame.mixer.music.unpause()? If so, then I don't know what the problem
is, it looks like the code should be correct now.

Perhaps share the complete code, so someone can try running it
themselves and see if it works for them.


> > On Sun, 2017-05-07 at 13:41 -0700, pytho...@xxxxxxxxx wrote: 
> > > Thank you for your reply. But nothing changed . 
> > > the else block did not run . 
> > 
> > This is where you need to do a little debugging on your own. Add a 
> > print(started, playing) line into the play function and view what
> > state 
> > it is at each time you press the button, the output I would expect
> > to 
> > see from the first few clicks would be: 
> > 
> > False False 
> > True True 
> > True False 
> > True True 
> > 
> > If that is the output you see, then the else block should be
> > running. 
> > You can test that by adding a print("FOO") line in the else block
> > and 
> > seeing if it runs on the 3rd button press. 
> > 
> > > def play(track): 
> > >     global playing, started  
> > >     pygame.mixer.init() 
> > >     pygame.mixer.music.load(track) 
> > >     t = wx.PyTimer(holder) 
> > >     if not started : 
> > >         pygame.mixer.music.play() 
> > >         playing = True 
> > >         started = True 
> > >     elif playing: 
> > >         pygame.mixer.music.pause() 
> > >         playing = False 
> > >     else: 
> > >         paused() 
> > >         playing = True 
> > >     t.Start(10) 
> > > 
> > > 
> > > 
> > > > From the comments on the docs page:  
> > > > 
> > > >     Yes, I've got the same problem. It only returns false when
> > the 
> > > > music  
> > > >     has been stopped, or no music has been loaded.  
> > > >     Maybe there should be an is_paused() method...  
> > > >     http://www.pygame.org/docs/ref/music.html#comment_pygame_mi
> > xer_ 
> > > > music  
> > > >     _get_busy  
> > > > 
> > > > So, don't switch on get_busy(), perhaps just keep a record of
> > the  
> > > > button state.  
> > > > 
> > > > e.g.  
> > > > 
> > > >     if not started:  
> > > >         pygame.mixer.music.play()  
> > > >        started = True  
> > > >         playing = True  
> > > >     elif playing:  
> > > >         pygame.mixer.music.pause()  
> > > >         playing = False  
> > > >     else:  
> > > >         pygame.mixer.music.unpause()  
> > > >         playing = True  
> > > > 
> > > > 
> > > > Perhaps also using set_endevent() to monitor when it has
> > finished  
> > > > playing, and reset started to False.  
> > > > 
> > > > 
> > > > Note that in your original code, the else part is unlikely to
> > ever 
> > > > run.  
> > > > 
> > > > 
> > > > On Sun, 2017-05-07 at 18:34 +0100, toufik wrote:  
> > > > > played = True  
> > > > >  
> > > > > def holder():  
> > > > >      time.sleep(0.001)  
> > > > >  
> > > > > def play(track):  
> > > > >      global played  
> > > > >      pygame.mixer.init()  
> > > > >      pygame.mixer.music.load(track)  
> > > > >      t = wx.PyTimer(holder)  
> > > > >      if played :  
> > > > >          pygame.mixer.music.play()  
> > > > >          played = False  
> > > > >      elif pygame.mixer.music.get_busy():  
> > > > >          pygame.mixer.music.pause()  
> > > > >      elif not pygame.mixer.music.get_busy():  
> > > > >          pygame.mixer.music.unpause()  
> > > > >      else:  
> > > > >          played = True  
> > > > >      t.Start(10) 

Attachment: signature.asc
Description: This is a digitally signed message part