在调用下一个函数之后,Kivy标签才会更新

时间:2017-10-02 18:40:02

标签: python raspberry-pi kivy kivy-language

我正在使用覆盆子pi 3和7英寸触摸屏显示器进行门铃项目。我正在使用kivy为GUI供电但是遇到了以下我似乎无法解决的问题。

kivy应用程序在按下按钮时加载,并为用户提供身份验证选项(例如rfid,键盘等)。选择一个选项后,用户会转到另一个屏幕,告诉他们在键盘选项的情况下输入其引脚。

这只是键盘屏幕的片段:

class KeypadScreen(Screen):
    keypadTextTest = StringProperty("Please Input 4 Digit Passcode")

    def Decision(self, *args):
        keypadOutput = FourDigitCodeCheck()
        if keypadOutput == True:
            self.change_text()
            Clock.schedule_interval(self.change_text, 0.1)
            self.change_text()
            doorOpen()
            return

    def change_text(self, *args):
        self.keypadTextTest = "Door Open"

当用户输入其引脚并且代码返回True(即它是正确的引脚)时,我希望标签更改为说“" Door Open"然后运行doorOpen功能(如下所示),现在只需打开和关闭LED。

def doorOpen():
    print ("Door Open : Please Enter")
    GreenLED("ON")
    sleep(5)
    GreenLED("OFF")
    return

目前,在标签更改之前调用doorOpen函数意味着LED打开,然后在5秒后关闭,然后标签发生变化。

我尝试了各种不同的更新标签文本的方法,甚至尝试添加不同的更改后尝试在门打开函数运行之前强制更新,但无济于事。

任何输入都会非常感激,因为这是一个单调乏味的下午。下面是键盘屏幕的kivy lang片段,包含了一些错误:

<KeypadScreen>:
    on_enter: root.Decision()
    BoxLayout:
        orientation: 'vertical'

        BoxLayout:
            orientation: 'vertical'
            Label:
                id: keypadtext
                text: root.keypadTextTest
                font_size: 50

完整python脚本的Pastebin:https://pastebin.com/K2CnnmVB

完整Kivy脚本的Pastebin:https://pastebin.com/9mgZFxyx

0 个答案:

没有答案