2017-09-07 42 views
1

如何在Python 3中執行一個計算程序,以便它在程序運行時進行計算,顯示按下s時的計算狀態,並在按下ctrl + c時退出程序?我知道我可以使用try-catch,但是當用戶按下s時我怎麼讀?我知道輸入,但它在等待按鍵時停止計算。我在bash命令行上使用Ubuntu 17.04。如何進行計算直到s被按下?

我試圖

n = 0 
try: 
    while True: 
     n += 1 
except KeyboardInterrupt: 
    print("Stopping") 
+0

你可以看看回答https://stackoverflow.com/a/35384301/131187和類似的。 –

回答

0

既然你是在Linux上,你可以使用curses模塊來做到這一點。 方式curses工作很簡單。我們將curses設置爲「監視」compute()函數(keypress變量作爲事件處理函數,您可以隨意調用它 - 我選擇將其稱爲keypress)。

正如你也可以閱讀文檔here,在最常見的方式來獲得輸入到一個窗口,是利用其getch()方法,但getch()暫停,等待用戶打一個關鍵。要改變這種行爲,我們使用方法nodelay(1)。通過使用nodelay(1),getch()作爲窗口變爲非阻塞並且當沒有輸入就緒時返回curses.ERR(值爲-1)。

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import sys 
import curses 

def compute(keypress): 
    keypress.nodelay(1) 
    n = 0 
    try: 
     while True: 
      n += 1 
      key = keypress.getch() 
      if key != -1 and key==115: # ord('s')=115 
       keypress.addstr(str(n) +'\n') 
    except KeyboardInterrupt: 
     sys.exit(0) 

if __name__ == '__main__': 
    curses.wrapper(compute)