我目前正在尝试让python媒体播放器在当前源结束后自动排队并播放随机源。为此,我一直在与运动员项目on_eos搏斗
import pyglet
import random
import os
#Global Variable Declarations
MusicDir = ""
MusicList = ""
CurrentIndex = 0
MaxSongs = 0
Player = pyglet.media.Player()
Player.eos_action = pyglet.media.Player.EOS_NEXT
@Player.event
def on_eos():
randomSong()
def getMusicDir():
global MusicDir
global MusicList
global MaxSongs
MusicDir = os.path.abspath("C:\music")
MusicList = os.listdir(MusicDir)
MaxSongs = len(MusicList)
def randomSong():
global CurrentIndex
global MusicList
global Player
CurrentIndex = random.randint(0, MaxSongs-1)
Player.queue(pyglet.media.load(MusicDir + "/" + MusicList[CurrentIndex]))
Player.next()
Player.play()
getMusicDir()
CurrentIndex = random.randint(0, MaxSongs-1)
Player.queue(pyglet.media.load(MusicDir + "/" + MusicList[CurrentIndex]))
Player.play()但是,on_eos()事件从未被调用过。我查看了pyglet文档,并尝试了
@Player.event('on_eos')甚至定义一个定义on_eos的播放器的子类,都没有效果。这是on_eos从未被分派的错误,还是我遗漏了什么?
发布于 2015-06-17 15:41:23
这应该适用于你:
Player = pyglet.media.Player()
# our event handling function
def on_eos():
print("on player eos")
Player.push_handlers(on_eos)https://stackoverflow.com/questions/30171983
复制相似问题