正如标题所示,有没有办法在使用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终端。
谢谢!
答案 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)