Python curses从stdin读取单个字符会影响print语句的输出。

3

我正在尝试从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个回答

5

看起来,在使用 curses 时,'\n' 只是一个换页符。你可能需要输出回车符,或者明确地使用 curses 来重新定位光标。


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"

如果您能解释一下您所做的更改,那就更好了。 - codeling

0
在适当的情况下启动窗口后,只有对我有效(在这种情况下,回车和换行符都被打印出来);我无法通过指定\r\n来使(或者更确切地说是)“正常工作”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接