2011-09-13 47 views
3

我試圖從標準輸入讀取單個字符的非阻塞讀取。我已經找到了curses庫的解決方案,但是在嘗試將輸出寫回標準輸出時,我做錯了什麼。從標準輸入讀取單個字符的Python curses影響打印語句的輸出

import curses 
from time import sleep 

def callback(screen): 
    screen.nodelay(1) 
    return screen.getkey() 

while 1: 
    try: 
    key = curses.wrapper(callback) 
    print "Got keypress: ", key 
    except: 
    sleep(3) 
    print "No Keypress" 
    print "Program\nOutput" 

# Prints 
No Keypress 
      Program 
        Output 

除縮排輸出外,一切都完美無缺。有沒有什麼辦法解決這一問題?

回答

5

這似乎是使用curses,'\ n'只是一個表單提要。你大概需要輸出一個回車,否則顯式地使用curses來重新定位遊標。

+0

謝謝。打印'\ r \ n'完美無缺! –

0

在正確的情況下curses窗口啓動,只有screen.addch('\n')爲我工作(在這種情況下,回車和換行都打印);我無法獲得print(或更確切地說,sys.stdout.write)「表現」,即使指定\r\n也是如此。

0
#!/usr/bin/python -tt 
#youres to use 
import curses 
from time import sleep 

def callback(screen): 
    screen.nodelay(1) 
    return screen.getkey() 

def getkey(): 
    try: 
    key = curses.wrapper(callback) 
    except: 
    key = None 
    return key 

#tryer 
while 1: 
    sleep(1) 
    k= getkey() 
    if k != None: 
    print "goo", k 
    else: 
    print "foo" 
+0

一些解釋你改變了會很好 – codeling

相關問題