2015-03-02 47 views
0

我正在嘗試創建一個程序,它以類似於遊戲節目倒數的格式運行。在python中製作一個定時器,同時錄製一個輸入

我發現了各種方法來創建一個計時器,最成功的與time.sleep命令和while循環。

但是,用戶需要能夠在計時器正在進行時輸入一個單詞,否則只要用戶想在計時器停止後想到他們的單詞就可以進行。一旦計時器停止,無論用戶輸入什麼都應該被視爲他們的話。我還沒有找到任何解決方案,因爲python按順序運行,所以很難同時有一個定時器和一個輸入。

+0

我認爲你需要使用線程[這](http://www.tutorialspoint.com/python/ python_multithreading.htm)可能是有用的 – lelloman 2015-03-02 20:51:20

+0

[如何在Python中運行後臺計時器]可能的重複(http://stackoverflow.com/questions/26002497/how-to-run-a-background-timer-in-python) – aruisdante 2015-03-02 20:52:03

+0

線程建議的問題在於,您無法輕易地從「watch the clock」線程中終止「等待輸入」線程。 – Kevin 2015-03-02 20:52:37

回答

0

這對我以前的工作...使用time.time()。如果這不是你在找什麼,也許退房perf_counter()

import msvcrt 
import time 

def Countdown(): 
    p = 3.00 
    alarm = time.time() + p 
    text = [] 
    while True: 
     n = time.time() 
     if msvcrt.kbhit(): 
      text.append(msvcrt.getche())  
     if n < alarm: 
      print(round(alarm - n)) 
     else: 
      print("Time's up!") 
      break 

Countdown() 

Making a countdown timer with Python and Tkinter?

+1

好的,但是,在運行時,他怎麼可以同時使用'raw_input'或'input'來獲取用戶的響應? – Kevin 2015-03-02 21:03:54

+0

那麼while循環內的任何東西都應該執行,直到時間耗盡。所以我會在while循環中添加輸入特性,可能在n pmat 2015-03-02 21:17:41

+0

好吧,但是'input'會被阻塞,並且在用戶輸入一些文本並按下Enter之前,不會執行其他代碼。所以他們可以在按下輸入前等待一百萬秒,並且在那一百萬秒之後,您的腳本不會打印「時間到」。 – Kevin 2015-03-02 21:21:56

相關問題