我一直在为此敲打我的头几天。我只在Python中工作(不使用.kv文件),但现在我无法弄清楚。将一个按钮绑定到一个从Kivy到python的回调
基本上,我将有一系列按钮来控制树莓派上的GPIO。在仅Python版本中,我有一个回调函数,并寻找正确的按钮“文本”以确定要激活的引脚。现在在kivy版本中,我将它简化为一个按钮,将回调移动到代码中的许多地方等,但似乎没有任何工作。
这里的pyton代码:
# Set up GPIO:
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
defrost = 27
GPIO.setup(defrost, GPIO.OUT)
GPIO.output(defrost, GPIO.LOW)
class ConsoleUI(BoxLayout):
def press_callback(obj):
if obj.state == "down":
GPIO.output(defrost, GPIO.HIGH)
else:
GPIO.output(defrost, GPIO.LOW)
pass
class ConsolesimpleApp(App):
def build(self):
return ConsoleUI()
if __name__ == '__main__':
ConsolesimpleApp().run()
GPIO.cleanup()
这里的KV代码:
# Console.kv
<ConsoleUI>:
ToggleButton:
id: Defrost
on_press: root.press_callback()
Image:
source: 'rear-window-defrost.png'
而且目前的错误消息:
AttributeError: 'ConsoleUI' object has no attribute 'state'
感谢您能给我任何指针!
奖金问题:对每个按钮有一个明确的回调或是“if obj.text ==”标准是更好的形式吗?因为我不会对我的按钮文字...
太棒了!感谢您提供非常完整的答案。我尝试了建议的代码,它的工作原理!你摇滚! – GroanMan
@GroanMan你好吗:) – EL3PHANTEN
@GroanMan会被接受的答案,或者你正在寻找别的东西? – EL3PHANTEN