1 回答

TA貢獻1794條經驗 獲得超8個贊
歡迎來到并發世界(有點)!
試想一下,你的程序運行:根據執行流程,他們定義的指令正在執行一個接一個的在它們的排列順序后,與例外的shutterPressed這是異步執行的(可能)。
因此,假設我們進入循環并在第一行<here>:
while True:
global shutterHasBeenPressed
shutterHasBeenPressed = False # <here>
#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!")
現在,shutterHasBeenPressed已設置為False并且驗證了隨后的條件,以便我們輸入if.
程序一直運行,直到意外地按下按鈕。說,它達到了<here>:
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 # <here>
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運行,設置shutterHasBeenPressed為True。然后,回到我們的循環,迭代結束,我們continue在循環的開始......那里有什么?!
shutterHasBeenPressed = False
按下按鈕完全沒有引起注意!
我相信這可以回答您的問題,詢問您做錯了什么。
添加回答
舉報