Kivy标签在调用下一个函数之前不会更新

2024-06-01 12:47:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个使用树莓皮3和7英寸触摸屏显示屏的门铃项目。我正在使用kivy来驱动GUI,但是遇到了以下我似乎无法解决的问题。在

kivy应用程序通过按键加载,并为用户提供认证选项(如rfid、键盘等),用户选择一个选项后会进入另一个屏幕,告诉他们在键盘选项的情况下输入自己的pin。在

以下是小键盘屏幕的片段:

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"

当用户输入他们的pin码,代码返回True(即正确的pin码)时,我希望标签更改为“Door Open”(门打开),然后运行doorOpen(门打开)功能(见下图),该功能目前只打开和关闭LED。在

^{pr2}$

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

我尝试过各种不同的方法来更新标签文本,甚至还尝试在之后添加不同的更改,以尝试在doorOpen函数运行之前强制进行更新,但是没有效果。在

今天下午很无聊,任何意见都将不胜感激。下面是小键盘屏幕的kivy lang代码片段,其中包含有错误:

^{3}$

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

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


Tags: text用户self屏幕def选项pinargs