Python curses 从stdin读取单个字符影响print输出
我正在尝试从标准输入(stdin)中非阻塞地读取一个字符。我找到了一种使用curses库的解决方案,但在尝试将输出写回标准输出(stdout)时,我好像做错了什么。
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
除了缩进的输出有问题,其他一切都运行得很好。有没有办法解决这个问题呢?
3 个回答
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
在正确启动 curses
窗口的情况下,只有 screen.addch('\n')
对我有效(这样的话,回车和换行都会被打印出来);我尝试使用 print
(或者说 sys.stdout.write
)时,它的表现不太如我所愿,即使我指定了 \r\n
也不行。
5
看起来在使用curses这个库的时候,'\n'只是换页符。你可能还需要输出一个回车符,不然就得用curses来手动移动光标。