Python curses 从stdin读取单个字符影响print输出

3 投票
3 回答
930 浏览
提问于 2025-04-17 02:15

我正在尝试从标准输入(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来手动移动光标。

撰写回答