簡體   English   中英

如何在按鍵時停止 function 並退出在 while 循環中運行的程序?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM