[英]How to stop a function & exit program running in a while loop on key press?
當按下鍵盤鍵 q 時,我需要停止程序。 我怎樣才能在下面的代碼中實現這一點? 如何忽略time.sleep
並檢測按鍵並通過打印某些內容退出程序? 目前,按鍵僅在 10 秒后被檢測到。 假設我在 3 秒后按 q 程序沒有退出。
import sys
import time
import keyboard
def hd():
print("Hi")
time.sleep(10)
if keyboard.is_pressed("q"):
print(keyboard.is_pressed("q"))
sys.exit()
while True:
hd()
time.sleep()
是一個阻塞調用。 程序運行時沒有任何反應。
縮短間隔。 例如,不是睡 10 秒,而是睡 100 × 0.1 秒。
import sys
import time
import keyboard
def hd():
print("Hi")
for _ in range(100):
time.sleep(0.1)
if keyboard.is_pressed("q"):
print(keyboard.is_pressed("q"))
sys.exit()
while True:
hd()
對於更復雜的行為(在偵聽鍵盤事件的同時進行實際工作),您將不得不研究多線程。
您可以添加一個hotkey ,而不是輪詢鍵盤以檢查是否按下了某個鍵。 當按下熱鍵q
(或您喜歡的任何鍵)時,將調用觸發器 function quit
。
import keyboard
import time
import sys
exitProgram = False
# prepare to exit the program
def quit():
global exitProgram
exitProgram=True
# set hotkey
keyboard.add_hotkey('q', lambda: quit())
# main loop to do things
while not exitProgram:
print("Hello")
time.sleep(1)
print("bye bye")
sys.exit()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.