使用sys.stdout.write打印时禁用输入

时间:2018-02-22 00:55:27

标签: python-3.x input sys

正如标题所示,有没有办法在使用sys.stdout.write打印时禁用用户输入?

-

例如,如果我使用此函数慢慢打印出一个字符串:

import time
import sys


def printSlowly(text, delay):
    for char in text:
        sys.stdout.write(char)
        sys.stdout.flush()

        time.sleep(delay)

如何在函数打印时阻止用户输入任何内容?

请注意,这适用于Linux Ubuntu终端。

谢谢!

1 个答案:

答案 0 :(得分:0)

想出来!涉及禁用回显和刷新输入的组合。

# from https://gist.github.com/kgriffs/5726314
def enable_echo(enable):
    fd = sys.stdin.fileno()
    new = termios.tcgetattr(fd)
    if enable:
        new[3] |= termios.ECHO
    else:
        new[3] &= ~termios.ECHO

    termios.tcsetattr(fd, termios.TCSANOW, new)

# from https://stackoverflow.com/questions/26555070/linux-python-clear-input-buffer-before-raw-input
def flushInput():
    termios.tcflush(sys.stdin, termios.TCIFLUSH)