2015-03-02 75 views
0

我對python和curses有點新,所以有幾個問題。我正在製作一個使用curses生成ui的終端應用程序。我試圖做一些類似於Linux程序top,只是它從XML文件中提取數據。我有這個代碼,我從以前的計算器問題修改。爲了簡化事情,我在這裏更新的動態值只是時間。我的兩個問題如下:python curses動態值+用戶輸入

  1. 我有x = screen.getch(7,2)來檢查用戶是否要退出。與top類似,如果用戶可以輸入「q」退出。但是由於這個原因,時間值並沒有被更新。我如何獲得用戶輸入以及值的動態更新。當我註釋掉screen.getch時,值開始更新。我讀過top正在使用curses的C版本,所以這應該是可能的,只需要在正確的方向上提供幫助。
  2. 我的第二個問題是關於刷新率。有沒有辦法使用curses api來控制它?我認爲這樣做的簡單方法是使用time.sleep()命令,但我不確定這是否是正確的方法?理想情況下,我想每60秒左右更新一次新的xml數據。

我確實在stackoverflow中看到這個Python/curses user input while updating screen,我想問題是類似的,但我有點不知所措的代碼。我還沒有真正理解類,並不能遵循邏輯。我在尋找簡單的東西。我相信這個人結束了使用line = sys.stdin.read(1)讓他的代碼運行。使用此代替getch時,我沒有任何運氣。我有一些關於x不能使用strip的錯誤()。

from os import system 
import curses 
import time 

x = 0 

while x != ord('q'): 
    screen = curses.initscr() 
    curses.curs_set(False) 
    screen.clear() 
    screen.border(0) 
    screen.addstr(1, 2, "BLAH BLAH ", 
       curses.A_REVERSE) 

    ltime = time.asctime(time.localtime(time.time())) 

    screen.addstr(3, 2,'BLAH1: ' + ltime)  
    screen.addstr(4, 2, "BLAH2") 

    screen.refresh() 

    x = screen.getch(7,2) 


curses.endwin() 
+0

您應該閱讀[Python docs Curses Tutorial](https://docs.python.org/2/howto/curses.html)和[window.nodelay](https://docs.python.org/ 2/library/curses.html#curses.window.nodelay)方法。 – msw 2015-03-02 18:45:32

+0

感謝幫助。我之前瀏覽過這個教程,它並沒有很多例子。只是對功能的描述。 – jti107 2015-03-02 19:46:15

回答

1

基於一些意見,我的screen=curses.initscr()之後加入screen.nodelay(True)並能夠得到它的工作。