Python交互式控制台使用curses lib getstr()函数不等待用户输入

时间:2018-05-10 18:15:25

标签: python input console curses python-curses

我正在尝试使用curses lib。

来创建交互式控制台

与此类似:

import curses

if __name__ == '__main__':
    stdscr = curses.initscr()
    stdscr.nodelay(False)
    curses.echo()
    curses.nonl()

while True:
    stdscr.addstr('#')
    stdscr.refresh()
    command = stdscr.getstr()

    if not command:
        continue

    if command == b'xys':
        stdscr.addstr('Execute xys block and print result')

    elif command == b'qwe':
        stdscr.addstr('Execute qwe block and print result')

    # ...

但它返回了这个:

#xys
Execute xys block and print result#
#qwe
Execute qwe block and print result#
#
#
#

(在Execute qwe block and print result#行之后我按了enter键)

stdscr.getstr()函数只等待输入的一半时间。另一半command = ''没有任何输入。这就是您在每个输出结尾处看到双#符号或#符号的原因。

期待的结果应该是:

#xys
Execute xys block and print result
#qwe
Execute qwe block and print result
#

任何建议?

1 个答案:

答案 0 :(得分:0)

我使用的是pyCharm终端(run> edit configurations...> emulate terminal in output console已检查过)但显然是curses lib和pyCharm不兼容。

在普通终端中运行脚本时,它运行良好。

希望这会对某人有所帮助!