我在树莓派上有一些 python 代码,我想运行并继续循环,直到按下按钮。
button.wait_for_press() 不合适,因为它会暂停程序直到它运行,但我已经试过了,看看硬件是否工作正常。
def shutterPressed():
global shutterHasBeenPressed
shutterHasBeenPressed = True
def main():
"""
Main program loop
"""
#start camera preview
camera.start_preview(resolution=(SCREEN_W, SCREEN_H))
#Display Intro screens
intro_image_1 = REAL_PATH + '/assets/intro_1.png'
intro_image_2 = REAL_PATH + '/assets/intro_2.png'
overlay_1 = overlay_image(intro_image_1, 0, 3)
overlay_2 = overlay_image(intro_image_2, 0, 4)
#Wait for button press
i = 0
blink_speed = 10
button.when_pressed = shutterPressed
while True:
global shutterHasBeenPressed
shutterHasBeenPressed = False
#Stay in loop until button is pressed
if shutterHasBeenPressed is False:
i += 1
if i == blink_speed:
overlay_2.alpha = 255
elif i == (2 * blink_speed):
overlay_2.alpha = 0
i = 0
#Restart while loop
sleep(0.1)
continue
#button has been pressed!
print("Button Pressed!")
当我运行此代码时,根本没有注册按钮按下。
我做错了什么?
编辑:所以我在shutterPressed() 函数中添加了一个打印语句,并确认它在按下按钮时正在运行。
In 还添加了一个语句,用于在 if 语句之前打印shutterHasBeenPressed 的值。这从未改变过虚假。
但是,如果我删除了在循环开始时将变量更改为 false 的行,那么代码就起作用了,所以这显然与运行各种位有关。也许在shutterPressed() 函数运行后while 循环又开始了?
无论哪种方式,我都通过将变量的重新分配移到 if 语句之后来修复它。
潇湘沐
幕布斯7119047
随时随地看视频慕课网APP
相关分类