我需要在Kivy中使用on_stop事件,但似乎无法正常工作。请看下面的代码
任何建议:我正在使用kivy 1.8
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.core.audio import SoundLoader
class MyApp(App):
def build(self):
sound = SoundLoader.load("some_sound.ogg")
sound.on_stop = sound.play
sound.play()
return Widget()
if __name__ in ('__android__', '__main__'):
MyApp().run()
我什至尝试使用状态来循环运行声音,但是很奇怪的是,即使当歌曲停止播放时,它仍然将其状态打印为播放状态。有人可以建议这是什么问题吗?
下面的代码:
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.core.audio import SoundLoader
from kivy.clock import Clock
class MyApp(App):
def build(self):
self.sound = SoundLoader.load("playScreen.wav")
self.sound.on_stop = self.update
self.sound.play()
Clock.schedule_interval(self.update, 1.0/1)
return Widget()
def update(self,dt):
print "state is ",self.sound.state
if self.sound.state == 'stop':
self.sound.play()
if __name__ in ('__android__', '__main__'):
MyApp().run()
最佳答案
这是audio_gstplayer.py
中的错误-到达EOS时,GstPlayer
会停止,但是Sound.state
不会更新,也不会触发on_stop
事件。
但是,如果只希望声音连续循环,则可以设置loop
属性。
sound = SoundLoader.load('some_sound.ogg')
sound.loop = True
sound.play()
编辑:提交的拉取请求https://github.com/kivy/kivy/pull/2131
关于python - on_stop事件未在kivy中被调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23432116/