既然你是在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)
你可以看看回答https://stackoverflow.com/a/35384301/131187和類似的。 –