3

stdin から 1 文字のノンブロッキング読み取りを実行しようとしています。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

curses を使用すると、'\n' は単なるフォーム フィードのように見えます。おそらく、キャリッジ リターンも出力する必要があります。または、curses を明示的に使用してカーソルの位置を変更する必要があります。

于 2011-09-14T00:06:50.943 に答える
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 に答える
0

適切なcursesウィンドウが開始された場合、私だけがscreen.addch('\n')機能しました(この場合、キャリッジリターンとラインフィードの両方が出力されます)。を指定しても、「動作」することはできませんでしprintた。sys.stdout.write\r\n

于 2013-05-12T14:14:27.780 に答える