3

我正在尝试对标准输入中的单个字符进行非阻塞读取。我找到了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

除了缩进输出之外,一切都完美无缺。有没有什么办法解决这一问题?

4

3 回答 3

5

看起来,使用诅咒,'\n' 只是一个换页。您可能还需要输出一个回车,或者显式使用curses 来重新定位光标。

于 2011-09-14T00:06:50.943 回答
0

在启动正确curses窗口的情况下,仅对screen.addch('\n')我有用(在这种情况下,回车和换行都被打印);print即使sys.stdout.write指定\r\n. _

于 2013-05-12T14:14:27.780 回答
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"
于 2014-01-13T20:41:48.810 回答