在Python中,当用户按Tab键时,如何获取结束的用户输入?
我一直在试图找到一种方法,以用户按下Tab键结束用户输入。我想让用户输入注释,直到他们按Tab键才完成输入 我试图使用这种方法,但不知道该怎么做在Python中,当用户按Tab键时,如何获取结束的用户输入?,python,string,variables,user-input,Python,String,Variables,User Input,我一直在试图找到一种方法,以用户按下Tab键结束用户输入。我想让用户输入注释,直到他们按Tab键才完成输入 我试图使用这种方法,但不知道该怎么做 text = input() 我希望用户键入注释,并能够在不完成输入的情况下按Enter键转到新行。只有用户按Tab键,输入才会完成,文本才会存储到变量中。您所要求的听起来很简单,但不幸的是,这并不容易做到。问题是从命令行到程序的输入是行缓冲的。也就是说,一次只向程序发送一行。解决这个问题有一些困难的方法,但通常效果不太好 如果你用你试图达到的目标来
text = input()
我希望用户键入注释,并能够在不完成输入的情况下按Enter键转到新行。只有用户按Tab键,输入才会完成,文本才会存储到变量中。您所要求的听起来很简单,但不幸的是,这并不容易做到。问题是从命令行到程序的输入是行缓冲的。也就是说,一次只向程序发送一行。解决这个问题有一些困难的方法,但通常效果不太好 如果你用你试图达到的目标来澄清你的问题,人们可能会提供更好的解决方案。同时,这里有一个简单的版本,如果用户按tab键,然后按enter键,则结束输入:
def get_input_ending_with_tab():
inp=input()+“\n”
虽然不是inp.endswith(“\t\n”):
inp+=input()+“\n”
返回inp
这里有一个更复杂的版本,它可以满足您的需要,但不能在Windows上运行。这也只能在程序的交互式执行中工作(当它连接到TTY时)
导入系统
进口tty
进口术语
def get_input_ending_与_tab_2()
buf=“”
stdin=sys.stdin.fileno()
tattr=termios.tcgetattr(stdin)
尝试:
tty.setcbreak(标准输入,终端输出)
尽管如此:
buf+=sys.stdin.read(1)
打印(buf[-1],end=”“)
sys.stdout.flush()
如果buf[-1]=“\t”:
打破
最后:
termios.tcsetattr(stdin、termios.TCSANOW、tattr)
打印()
返回buf
使用此选项:并在读取字符选项卡时终止。