Kivy按钮 - 点击播放声音

时间:2014-09-08 22:38:46

标签: python kivy

我已经看了几个答案,但我无法对它们做出正面或反面。 当按下任何按钮时,我希望它能够播放" beep.wav"。 我遇到的另一个问题是"返回布局",我应该把它放在缩进方面。非常感谢,迈克尔。

import kivy
import random
from kivy.core.audio import SoundLoader
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout


def callback(instance):
        print('The button <%s> is being pressed' % instance.text)

red = [1,0,0,1]
green = [0,1,0,1]
blue =  [0,0,1,1]
purple = [1,0,1,1]

class Buttons(App):
    def Orientation(self, orient):
        self.orient = orient

    def build(self):
        layout = BoxLayout(padding=0, orientation=self.orient)
        colors = [red, green, blue, purple]

        for i in range(4):
            btn = Button(text="Test Button %s" % (i+1), background_color=random.choice(colors))
            layout.add_widget(btn)
            btn.bind(on_press=btn_pressed) 
        return layout

    def btn_pressed():
        sound = SoundLoader.load('beep.wav')
        sound.play()

if __name__ == "__main__":
    app = Buttons()
    app.Orientation(orient="vertical")
    app.run()

2 个答案:

答案 0 :(得分:0)

  

btn.bind(on_press = BTN_PRESSED)

创建此btn.bind(on_press=self.btn_pressed),它不是局部变量,但可以通过这种方式作为类方法访问。

  

我遇到的另一个问题是&#34;返回布局&#34;,我应该把它放在缩进方面。

真正的问题是程序逻辑应该返回哪里?答案是该方法应该总是返回它,因为你总是希望它是根小部件,所以你当前的位置(方法的最后一行,总是被调用)都没问题。

答案 1 :(得分:0)

我会创建一个.kv文件

<Buttons>:
   Button1:
       background_color: 1,0,0,1
       text: "Play Sound"
       on_press: root.btn_pressed()
Button2: etc

这可能会隔离问题。然后删除返回

if_name__ == 'main':
    Button().run()