我可以使用echo()noecho()在curses中设置回显状态,但是如何查看当前处于什么状态?这是我想做的事情:

# get current echo state
if screen.echo_is_on():
    my_echo_state=False   # echo is currently off
    curses.echo()         # turn echo on
else:
    my_echo_state=True    # echo is already on

# get input from user
input_str = screen.getstr(r, c)

# return echo to previous state
if my_echo_state==False:
    curses.noecho()


我正在寻找可以完成screen.echo_is_on()的东西。

最佳答案

Python curses binding中没有echo的getter函数。


Python具有与curses C函数相对应的方法。
C绑定中的echo状态(以及其他一些功能)存储在SCREEN结构中,该结构通常是不透明的。
其他状态信息存储在不透明的WINDOW中。


原始curses界面有扩展。 NetBSD引入了WINDOW等不透明结构的概念。后来,ncurses将其用作帮助隐藏/控制线程应用程序的状态信息的选项。为此,ncurses添加了用于从WINDOW访问数据的功能(请参见curs_opaque(3x))。

但是,没有用于访问SCREEN内容的新功能。 curs_inopts(3x)中介绍了这些功能的启用/禁用功能。

如果需要吸气剂,则可以自己编写一个,例如,作为隐藏对echonoecho的实际调用的类。

关于python - 在Python中获取curses中的回声/无回声状态,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35587549/

10-12 22:33