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

时间:2011-09-13 23:08:55

标签: python curses

我正在尝试从标准输入执行单个字符的非阻塞读取。我找到了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 :(得分:5)

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

答案 1 :(得分:0)

在启动正确的curses窗口的情况下,只有screen.addch('\n')为我工作(在这种情况下,打印回车和换行);即使指定print,我也无法让sys.stdout.write(或更确切地说,\r\n)“行为”。

答案 2 :(得分: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"