【发布时间】:2016-09-25 15:48:53
【问题描述】:
我正在尝试制作一个 python 脚本,该脚本从标准输入获取输入,使用 curses 在终端中显示 GUI,然后当用户完成交互时将结果输出到标准输出。这种行为的一个很好的例子是selecta,但它是用 ruby 编写的。
我无法让 curses 显示任何内容。这是迄今为止我尝试过的最小示例(它只显示一个字符并等待一个字符):
import os, sys
import curses
c = None
old_out = sys.__stdout__
old_in = sys.__stdin__
old_err = sys.__stderr__
sys.__stdout__ = sys.stdout = open('/dev/tty', 'w')
sys.__stdin__ = sys.stdin = open('/dev/tty')
sys.__stderr__ = sys.stderr = open('/dev/tty')
def show_a(s):
global c
s.addch(ord('a'))
c = s.getch()
curses.wrapper(show_a)
sys.stdin.flush()
sys.stdout.flush()
sys.stderr.flush()
sys.stdin.close()
sys.stdout.close()
sys.stderr.close()
sys.__stdout__ = sys.stdout = old_out
sys.__stdin__ = sys.stdin = old_in
sys.__stderr__ = sys.stderr = old_err
print(c)
当我尝试使用echo $(python3 show_a.py) 时没有显示任何内容,但在按下任意键后会显示其编号:
这样的事情甚至可以使用诅咒,如果可以怎么做?
【问题讨论】:
标签: python curses python-curses