首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >on_eos装饰器未被调用

on_eos装饰器未被调用
EN

Stack Overflow用户
提问于 2015-05-11 15:41:53
回答 1查看 546关注 0票数 0

我目前正在尝试让python媒体播放器在当前源结束后自动排队并播放随机源。为此,我一直在与运动员项目on_eos搏斗

代码语言:javascript
复制
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文档,并尝试了

代码语言:javascript
复制
@Player.event('on_eos')

甚至定义一个定义on_eos的播放器的子类,都没有效果。这是on_eos从未被分派的错误,还是我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-17 15:41:23

这应该适用于你:

代码语言:javascript
复制
Player = pyglet.media.Player()

# our event handling function
def on_eos():
    print("on player eos")

Player.push_handlers(on_eos)
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30171983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档