在 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() 调用。所以真的很快。
我正在使用 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() 调用。所以真的很快。