如何使用raspberry pi按下物理按钮时加载kivy应用程序

时间:2017-09-29 17:10:26

标签: python raspberry-pi kivy

我目前正在开发一种覆盆子pi门铃。我正在使用通过GPIO连接的物理按钮作为实际的门铃。按下此按钮后,我希望启动我制作的kivy应用程序,然后显示各种选项,并可以调用函数等。

while True:
    print ("Please Press Door Bell to Begin")
    if GPIO.wait_for_edge(23, GPIO.FALLING):
        introduction()

被调用的introduction()是kivy构建类:

class introduction(App):
   def build(self):
       return InitialMenu()

这显然不是正确的方法,因为从开始运行类,从控制台可以看出:

INFO   ] [Logger      ] Record log in /home/pi/.kivy/logs/kivy_17-09-29_28.txt
[INFO   ] [Kivy        ] v1.10.1.dev0, git-1e6c9e8, 20170927
[INFO   ] [Python      ] v2.7.9 (default, Sep 17 2016, 20:26:04) 
[GCC 4.9.2]
[INFO   ] [Factory     ] 194 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: sdl2
Please Press Door Bell to Begin

我想知道是否有人有任何想法或变通方法可以试图让它运行或者我是否遗漏了一些东西。我觉得刚开始运行Kivy应用程序并让它继续运行可能是最后的选择,但是,试图避免这种情况。

非常感谢。

1 个答案:

答案 0 :(得分:0)

这些日志行由Kivy相关的导入触发,而不是通过运行应用程序。

在您的示例中,您永远不会真正运行App类,因为要执行此操作,您需要调用其run方法:introduction().run()