2015-09-16 24 views
0

我想中斷一個循環,如果用戶按下特定的鍵,並在循環後繼續執行。當stdin可用時,下面的代碼應該工作。如何檢查用戶是否在不使用getch()的情況下在Python中按下了一個鍵?

While True: 
    # Do stuff here. 
    if msvcrt.kbhit(): 
     key = msvcrt.getch() 
     if key == somekey: 
      break 

我的問題是stdin在我用於開發的PyScripter IDE調試器中不可用。是否有另一種方法來繞過標準輸入呢?如果需要,該解決方案可以是Windows專用的。

P.S.我在Windows 7上使用Python 2.7,使用'Remote'Python引擎(無論這意味着什麼)使用PyScripter。

P.P.S.我根據下面的dbliss的反饋重寫了這個問題。

+0

你是什麼「在Python調試器」是什麼意思?你在你的代碼中使用了'pdb'模塊嗎? – dbliss

+0

@dbliss我正在使用PyScripter,它似乎沒有在引擎蓋下使用pdb模塊。問題似乎是PyScripter調試器正在攔截stdin。我重新寫了這個問題,使其更清晰。 – ChaimG

回答

0

在Windows中,下面的代碼應該做的伎倆:

import win32api 
import win32con 

print "Doing stuff; press F12 to interrupt." 
While True: 
    # Do stuff here. 
    if win32api.GetAsyncKeyState(win32con.VK_F12) != 0: 
     break 
相關問題