我已经看了几个答案,但我无法对它们做出正面或反面。 当按下任何按钮时,我希望它能够播放" 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()
答案 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()