您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Python input輸入超時選擇默認值自動跳過問題怎么解決”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Python input輸入超時選擇默認值自動跳過問題怎么解決”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
Python input 等待鍵盤輸入,超時選擇默認值,釋放input,之后重新進入等待鍵盤輸入狀態,直到用戶輸入可用數據。
pip install func_timeout
func_set_timeout 裝飾器設置超時時間,程序超時后會拋出func_timeout.exceptions.FunctionTimedOut異常
import func_timeout@func_timeout.func_set_timeout(3) #超時時間為 3sdef Input_task(): print('請輸入:') return input()
def task(): try: s = Input_task() print('成功輸入') except func_timeout.exceptions.FunctionTimedOut as e: s = '默認值!' print(s)
下面的代碼中將 task() 函數放進 while 循環,出現超時異常后,手動輸入無效
import func_timeoutfrom func_timeout import func_set_timeouttimeout = 4@func_set_timeout(timeout)def Input_task(): print('請輸入:') return input()def task(): try: s = Input_task() print('成功輸入') run_flag = False except func_timeout.exceptions.FunctionTimedOut as e: s = '默認值!' run_flag = True print(s) return run_flag #如果成功輸入將退出 while 循環run_flag = Truewhile run_flag: run_flag = task()
運行結果:
小結:該模塊只能進行一次超時控制,當程序第一次拋出超時異常后,即使用戶輸入數據也無濟于事
是Thead類的一個子類,可用于在指定時間間隔后啟動線程
# 導入線程模塊import threading timer = threading.Timer(interval, function, args=None, kwargs=None)
參數介紹:
interval
— 定時器間隔,間隔多少秒之后啟動定時器任務(單位:秒);
function
— 線程函數;
args
— 線程參數,可以傳遞元組類型數據,默認為空(缺省參數);
kwargs
— 線程參數,可以傳遞字典類型數據,默認為空(缺省參數)
(1) PyUserInput模塊安裝
pip install PyUserInput
python3.5的PyMouse和PyKeyboard模塊都集成到了PyUserInput模塊中
(2) 鍵盤實例化
from pykeyboard import PyKeyboardk = PyKeyboard()#鍵盤的實例 k
(3) 鍵盤操作說明
單個按鍵
k.type_string(‘Hello, World!') #模擬鍵盤輸入字符串k.press_key(‘H') #模擬鍵盤按H鍵k.release_key(‘H') #模擬鍵盤松開H鍵k.tap_key(“H”) #模擬點擊H鍵k.tap_key(‘H',n=2,interval=5) #模擬點擊H鍵,2次,每次間隔5秒k.tap_key(k.function_keys[5]) #點擊功能鍵F5k.tap_key(k.numpad_keys[5],3) #點擊小鍵盤5,3次
組合鍵(例如同時按alt+tab鍵盤 )
k.press_key(k.alt_key) #按住alt鍵k.tap_key(k.tab_key) #點擊tab鍵k.release_key(k.alt_key) #松開alt鍵
from pykeyboard import PyKeyboardimport threadingdef Input_simulate(timeout): if not Input_event.is_set(): key = PyKeyboard()#鍵盤的實例 key key.type_string('no input') #模擬鍵盤輸入字符串 key.press_key(key.enter_key) #模擬按下 ENTER 鍵 key.release_key(key.enter_key) #模擬釋放 ENTER 鍵 global timer #將定時器的句柄定義成一個全局變量,這樣做的好處是,創建的定時器進程和實例不會堆積,而是覆蓋,避免不必要的內存占用。 Input_event.clear() timer = threading.Timer(timeout, Input_simulate, args=(timeout,)) timer.start() msg = input('請輸入你的信息:') if msg == 'no input': pass else: print(msg) #打印輸入信息 timer.cancel() #取消定時器的調度,當用戶輸入數據時將停止計時,程序退出運行if __name__ == '__main__': Input_event = threading.Event() Input_event.set() Input_simulate(5)
運行結果:
小結:該代碼等待鍵盤輸入,超時選擇默認值,釋放input,之后重新進入等待鍵盤輸入狀態,直到用戶輸入可用數據。
讀到這里,這篇“Python input輸入超時選擇默認值自動跳過問題怎么解決”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。