我正在使用覆盆子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