Skip to main content
 首页 » 编程设计

python之尝试在 kivy 中构建节拍器之事件循环管理

2025年05月04日18exmyth

因为我在这里没有找到任何东西,所以我试着提出我的问题。

我正在尝试在 kivy 中构建一个简单的节拍器。我基本上采用了随安装提供的音频示例,并希望添加节拍器功能。

class AudioButton(ToggleButton): 
 
    filename = StringProperty(None) 
    sound = ObjectProperty(None) 
 
    def on_filename(self, instance, value): 
        # the first time that the filename is set, we are loading the sample 
        if self.sound is None: 
            self.sound = SoundLoader.load(value) 
 
    def on_press(self): 
        # stop the sound if it's currently playing 
        if self.sound.status != 'stop': 
            self.sound.stop() 
        self.sound.play() 

如您所见,我将类从 Button 更改为 ToggleButton。

我试图用 self.sound.play() 放置一个 while 循环,但这会导致无穷大,所以基本上我正在寻找一种方法来如果我再次按下按钮,则跳出循环。

我没有真正从文档中理解事件循环管理,我认为这应该是答案,但我以前从未使用过事件循环。 如果有人可以为这种情况提供一些示例代码,那就太好了。

请您参考如下方法:

你想开始寻找的地方是在 Kivy 文档中讨论 clock events .在像这样的事件驱动系统中,任何类型的 while 循环都会使系统崩溃。相反,当您希望某些事情定期发生时,您要求系统设置一个计时器并告诉它您希望在每次计时器结束时调用的函数。

在您的情况下,您可能只播放那个节拍器的滴答声,直到下一次计时器计时结束。