1

ここには何も見つからないので、質問を入力してみます。

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

whileでループを入れてみたのself.sound.play()ですが、無限大になってしまうので、基本的にはもう一度ボタンを押したらループから抜けられる方法を探しています。

ドキュメントからのイベントループ管理についてはよくわかりませんでした。これが答えになるはずですが、これまでイベントループを使用したことはありませんでした。誰かがそのような状況のサンプルコードを提供できれば素晴らしいでしょう.

4

1 に答える 1

6

探し始めたい場所は、時計イベントについて説明している Kivy ドキュメントにあります。このようなイベント駆動型システムでは、あらゆる種類のwhileループがシステムを崩壊させます。代わりに、何かを定期的に発生させたい場合は、システムにタイマーを設定するように依頼し、タイマーが経過するたびに呼び出したい関数をシステムに伝えます。

あなたの場合、おそらくその 1 つのメトロノーム ティックを再生するだけで、次にタイマーが経過するまで完了します。

于 2012-09-07T12:36:58.143 に答える