在 Python 中不使用睡眠一段时间后执行代码?

Execute code after some time without using sleep in Python?

我正在使用 Python 为 LCD 屏幕编写代码,我希望它显示闪烁的 'Press SELECT' 消息,直到按下 LCD 上的按钮。

问题是当程序处于睡眠状态时,它不会记录用户按下按钮,这意味着我必须在打印消息时准确按下按钮。

如何在不使用睡眠的情况下执行此操作?

这是我使用的代码:

#lcd.is_pressed(LCD.SELECT) - checks if button is pressed
#lcd.message - prints text on LCD
#lcd.clear - removes all text from LCD

while not lcd.is_pressed(LCD.SELECT):
      lcd.message ('Press Select')
      sleep(2)
      lcd.clear()
      sleep(2)

把你的时间分成更小的部分;这每百分之一秒检查一次按钮:

i = 0
while not lcd.is_pressed(LCD.SELECT):
    i = (i + 1) % 400
    if i == 0:
        lcd.message("Press Select")
    elif i == 200:
        lcd.clear()
    sleep(0.01)

试试这个:

import time

delayTime=2 #In seconds
dummyVariable=is_pressed(LCD.Select)
while not dummyVariable:
    lcd.message('Press Select')
    dummyVariable=softWait(delayTime)
    lcd.clear()
    dummyVariable=softWait(delayTime)

def softWait(delayTime)
    t0 = time.time()
    t1 = time.time()
    while t0-t1<delayTime:
        dummyVariable=is_pressed(LCD.Select)
        t1=time.time()
        if dummyVariable:
            return True
    return False

不知道 is_pressed 是如何运作的,我无法真正测试它。但最有可能的问题是,如果 is_pressed 仅在当前单击按钮时注册为真,如果按钮单击速度快于系统到达 return time.time( ) 或 lcd.message() 调用。所以真的很快。