我很难理解kivy的定制事件。我正在用kivy制作一个简单的音乐播放器,我想要一些基本的功能:当一首歌结束时,下一首就会播放。Kivy的sound类提供2个事件,on_press
和{
显然,这里正确的选择是on_stop
。但是,当歌曲自然结束时和用户手动停止时,都会触发此事件。问题是,我不希望后者发生,所以我决定创建一个自定义事件。帮助我理解自定义事件的在线资源非常少而且令人困惑。下面是kivy文档中的示例:
class MyWidget(Widget):
def __init__(self, **kwargs):
super(MyWidget, self).__init__(**kwargs)
self.register_event_type('on_swipe')
def on_swipe(self):
pass
def on_swipe_callback(*largs):
print('my swipe is called', largs)
w = MyWidget()
w.dispatch('on_swipe')
因此,我们有事件(on_swipe
)和事件处理程序(on_swipe_callback
)。这个事件应该什么时候触发?我该怎么定义呢?假设我希望我的事件被称为on_finish
,并且我希望当一首歌达到其持续时间的末尾时触发它。我该怎么写,在哪里写呢?如果有人能帮助我了解这些活动是如何运作的,我将不胜感激。在
事件正好在调用^{} 时触发。你的问题中的代码部分缺少的是
bind
。你会有类似的东西这告诉
w
在事件on_swipe
发生时调用on_swipe_callback
。在关于你最初的问题,这可能比看起来更困难,因为在} 来安排一个函数来检查声音是否在声音结束之前仍在播放。当然,如果用户寻求。最后,您可能必须直接更改
on_stop
时,声音中当前的位置是未知的。 一个相当老套的解决方案可能是使用^{kivy.audio
中的Sound
类来生成新事件。在另一个选择是,如果在UI中按下了Stop按钮,则签入您的
on_stop
回调。如果这首歌没有自然结束。您可以在on_press
处理程序中为按钮设置一个标志,并在on_stop
处理程序中清除它。在相关问题 更多 >
编程相关推荐